adding unit tests for platform_data
diff --git a/platform_data/defs.bzl b/platform_data/defs.bzl
index ce8a648..0d38f86 100644
--- a/platform_data/defs.bzl
+++ b/platform_data/defs.bzl
@@ -54,7 +54,7 @@
 def _platform_data_impl(ctx):
     target = ctx.attr.target
 
-    default_info = target[DefaultInfo]
+    default_info = target[0][DefaultInfo]
     files = default_info.files
     original_executable = default_info.files_to_run.executable
     runfiles = default_info.default_runfiles
diff --git a/platform_data/test/BUILD b/platform_data/test/BUILD
new file mode 100644
index 0000000..99a8a28
--- /dev/null
+++ b/platform_data/test/BUILD
@@ -0,0 +1,25 @@
+load("//third_party/bazel_platforms/experimental/platform_data:defs.bzl", "platform_data")
+load(":analysis_tests.bzl", "platform_data_test", "write_target_platform_rule_test")
+
+platform_data_test(
+    name = "platform_data_test",
+    expected_platform = "//third_party/bazel_platforms/experimental/platform_data/test:test_platform",
+    target_under_test = ":foo_embedded",
+)
+
+write_target_platform_rule_test(
+    name = "foo",
+)
+
+platform_data(
+    name = "foo_embedded",
+    testonly = True,
+    platform = ":test_platform",
+    target = ":foo",
+)
+
+platform(
+    name = "test_platform",
+    constraint_values = [
+    ],
+)
diff --git a/platform_data/test/analysis_tests.bzl b/platform_data/test/analysis_tests.bzl
new file mode 100644
index 0000000..09bc408
--- /dev/null
+++ b/platform_data/test/analysis_tests.bzl
@@ -0,0 +1,72 @@
+"""TODO(aranguyen): Write module docstring."""
+
+load("@bazel_skylib/lib:unittest.bzl", "analysistest", "asserts")
+
+TransitivePlatformInfo = provider(
+    "Contains information about transitive target platform info",
+    fields = ["platforms"],
+)
+
+TestPlatformInfo = provider(
+    "Contains information about target platform",
+    fields = ["platforms"],
+)
+
+def _transitive_aspect_impl(target, aspect_ctx):
+    transitive_target_platforms = []
+    for dep in getattr(aspect_ctx.rule.attr, "target", []):
+        if TestPlatformInfo in dep:
+            transitive_target_platforms.append(dep[TestPlatformInfo].platforms)
+
+    return [TransitivePlatformInfo(platforms = transitive_target_platforms)]
+
+_transitive_aspect = aspect(
+    attr_aspects = ["target"],
+    implementation = _transitive_aspect_impl,
+)
+
+def _platform_data_test_impl(ctx):
+    env = analysistest.begin(ctx)
+    target_under_test = analysistest.target_under_test(env)
+    transitive_target_platforms = target_under_test[TransitivePlatformInfo]
+
+    print("transitive_target_platforms: " + str(transitive_target_platforms))
+    asserts.equals(
+        env,
+        ctx.attr.expected_platform,
+        str(transitive_target_platforms.platforms[0]),
+        "Target platform does not match the expected value",
+    )
+    return analysistest.end(env)
+
+platform_data_test = analysistest.make(
+    _platform_data_test_impl,
+    attrs = {
+        "expected_platform": attr.string(),
+    },
+    extra_target_under_test_aspects = [_transitive_aspect],
+)
+
+def print_target_platform(target_platform):
+    return """
+    echo Target platform for target under test is {target_platform}
+    """
+
+def _write_target_platform_impl(ctx):
+    script = print_target_platform(str(ctx.fragments.platform.platform))
+    executable = ctx.actions.declare_file(ctx.label.name)
+
+    ctx.actions.write(
+        output = executable,
+        content = script,
+        is_executable = True,
+    )
+    return [
+        DefaultInfo(executable = executable),
+        TestPlatformInfo(platforms = ctx.fragments.platform.platform),
+    ]
+
+write_target_platform_rule_test = rule(
+    implementation = _write_target_platform_impl,
+    test = True,
+)