From 0cb4a49d38b39de33411a25b8f9f56dd575acf94 Mon Sep 17 00:00:00 2001 From: Nick Gerleman Date: Tue, 9 May 2023 15:35:42 -0700 Subject: [PATCH] Convert manually authored tests to TypeScript Summary: Converts the manually authored tests against the JavaScript bindings to TypeScript. This should make authoring UTs a bit more pleasent, but more importantly lets us run typechecking on sample usage of all of the various APIs. Reviewed By: yungsters Differential Revision: D45570416 fbshipit-source-id: 44586b4d31fbeae406b388ed336a8305c788b5dd --- ...neTest.test.js => YGAlignBaselineTest.test.ts} | 6 ++++-- ...rTest.test.js => YGComputedBorderTest.test.ts} | 2 ++ ...nTest.test.js => YGComputedMarginTest.test.ts} | 2 ++ ...Test.test.js => YGComputedPaddingTest.test.ts} | 2 ++ ...GDirtiedTest.test.js => YGDirtiedTest.test.ts} | 15 +++++++++------ ...{YGErrataTest.test.js => YGErrataTest.test.ts} | 2 ++ ...xBasisAuto.test.js => YGFlexBasisAuto.test.ts} | 2 ++ ...cheTest.test.js => YGMeasureCacheTest.test.ts} | 6 ++++-- ...GMeasureTest.test.js => YGMeasureTest.test.ts} | 8 ++++++-- 9 files changed, 33 insertions(+), 12 deletions(-) rename javascript/tests/{YGAlignBaselineTest.test.js => YGAlignBaselineTest.test.ts} (95%) rename javascript/tests/{YGComputedBorderTest.test.js => YGComputedBorderTest.test.ts} (94%) rename javascript/tests/{YGComputedMarginTest.test.js => YGComputedMarginTest.test.ts} (94%) rename javascript/tests/{YGComputedPaddingTest.test.js => YGComputedPaddingTest.test.ts} (94%) rename javascript/tests/{YGDirtiedTest.test.js => YGDirtiedTest.test.ts} (90%) rename javascript/tests/{YGErrataTest.test.js => YGErrataTest.test.ts} (96%) rename javascript/tests/{YGFlexBasisAuto.test.js => YGFlexBasisAuto.test.ts} (93%) rename javascript/tests/{YGMeasureCacheTest.test.js => YGMeasureCacheTest.test.ts} (82%) rename javascript/tests/{YGMeasureTest.test.js => YGMeasureTest.test.ts} (86%) diff --git a/javascript/tests/YGAlignBaselineTest.test.js b/javascript/tests/YGAlignBaselineTest.test.ts similarity index 95% rename from javascript/tests/YGAlignBaselineTest.test.js rename to javascript/tests/YGAlignBaselineTest.test.ts index 6c99fa74..9eeb7f5c 100644 --- a/javascript/tests/YGAlignBaselineTest.test.js +++ b/javascript/tests/YGAlignBaselineTest.test.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; + test("align_baseline_parent_using_child_in_column_as_reference", () => { const config = Yoga.Config.create(); let root; @@ -41,7 +43,7 @@ test("align_baseline_parent_using_child_in_column_as_reference", () => { root_child1_child1.setIsReferenceBaseline(true); root_child1.insertChild(root_child1_child1, 1); - root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR); + root.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR); expect(root_child0.getComputedLeft()).toBe(0); expect(root_child0.getComputedTop()).toBe(100); @@ -99,7 +101,7 @@ test("align_baseline_parent_using_child_in_row_as_reference", () => { root_child1_child1.setIsReferenceBaseline(true); root_child1.insertChild(root_child1_child1, 1); - root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR); + root.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR); expect(root_child0.getComputedLeft()).toBe(0); expect(root_child0.getComputedTop()).toBe(0); diff --git a/javascript/tests/YGComputedBorderTest.test.js b/javascript/tests/YGComputedBorderTest.test.ts similarity index 94% rename from javascript/tests/YGComputedBorderTest.test.js rename to javascript/tests/YGComputedBorderTest.test.ts index 60445800..55f412cc 100644 --- a/javascript/tests/YGComputedBorderTest.test.js +++ b/javascript/tests/YGComputedBorderTest.test.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; + test("border_start", () => { const root = Yoga.Node.create(); root.setWidth(100); diff --git a/javascript/tests/YGComputedMarginTest.test.js b/javascript/tests/YGComputedMarginTest.test.ts similarity index 94% rename from javascript/tests/YGComputedMarginTest.test.js rename to javascript/tests/YGComputedMarginTest.test.ts index a2e54a42..3ce35ebf 100644 --- a/javascript/tests/YGComputedMarginTest.test.js +++ b/javascript/tests/YGComputedMarginTest.test.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; + test("margin_start", () => { const root = Yoga.Node.create(); root.setWidth(100); diff --git a/javascript/tests/YGComputedPaddingTest.test.js b/javascript/tests/YGComputedPaddingTest.test.ts similarity index 94% rename from javascript/tests/YGComputedPaddingTest.test.js rename to javascript/tests/YGComputedPaddingTest.test.ts index cb538697..28961f97 100644 --- a/javascript/tests/YGComputedPaddingTest.test.js +++ b/javascript/tests/YGComputedPaddingTest.test.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; + test("padding_start", () => { const root = Yoga.Node.create(); root.setWidth(100); diff --git a/javascript/tests/YGDirtiedTest.test.js b/javascript/tests/YGDirtiedTest.test.ts similarity index 90% rename from javascript/tests/YGDirtiedTest.test.js rename to javascript/tests/YGDirtiedTest.test.ts index befcc0e3..f78dc6a7 100644 --- a/javascript/tests/YGDirtiedTest.test.js +++ b/javascript/tests/YGDirtiedTest.test.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; + test("dirtied", () => { const root = Yoga.Node.create(); root.setAlignItems(Yoga.ALIGN_FLEX_START); @@ -17,8 +19,9 @@ test("dirtied", () => { root.setDirtiedFunc(() => { dirtied++; }); + // only nodes with a measure function can be marked dirty - root.setMeasureFunc(() => {}); + root.setMeasureFunc(() => ({ width: 0, height: 0 })); expect(dirtied).toBe(0); @@ -43,7 +46,7 @@ test("dirtied_propagation", () => { root_child0.setAlignItems(Yoga.ALIGN_FLEX_START); root_child0.setWidth(50); root_child0.setHeight(20); - root_child0.setMeasureFunc(() => {}); + root_child0.setMeasureFunc(() => ({ width: 0, height: 0 })); root.insertChild(root_child0, 0); const root_child1 = Yoga.Node.create(); @@ -82,14 +85,14 @@ test("dirtied_hierarchy", () => { root_child0.setAlignItems(Yoga.ALIGN_FLEX_START); root_child0.setWidth(50); root_child0.setHeight(20); - root_child0.setMeasureFunc(() => {}); + root_child0.setMeasureFunc(() => ({ width: 0, height: 0 })); root.insertChild(root_child0, 0); const root_child1 = Yoga.Node.create(); root_child1.setAlignItems(Yoga.ALIGN_FLEX_START); root_child1.setWidth(50); root_child1.setHeight(20); - root_child1.setMeasureFunc(() => {}); + root_child0.setMeasureFunc(() => ({ width: 0, height: 0 })); root.insertChild(root_child1, 0); root.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR); @@ -120,7 +123,7 @@ test("dirtied_reset", () => { root.setAlignItems(Yoga.ALIGN_FLEX_START); root.setWidth(100); root.setHeight(100); - root.setMeasureFunc(() => {}); + root.setMeasureFunc(() => ({ width: 0, height: 0 })); root.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR); @@ -142,7 +145,7 @@ test("dirtied_reset", () => { root.setAlignItems(Yoga.ALIGN_FLEX_START); root.setWidth(100); root.setHeight(100); - root.setMeasureFunc(() => {}); + root.setMeasureFunc(() => ({ width: 0, height: 0 })); root.markDirty(); diff --git a/javascript/tests/YGErrataTest.test.js b/javascript/tests/YGErrataTest.test.ts similarity index 96% rename from javascript/tests/YGErrataTest.test.js rename to javascript/tests/YGErrataTest.test.ts index 4a268151..4c13a73a 100644 --- a/javascript/tests/YGErrataTest.test.js +++ b/javascript/tests/YGErrataTest.test.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; + test("errata_all_contains_example_errata", () => { const config = Yoga.Config.create(); config.setErrata(Yoga.ERRATA_ALL); diff --git a/javascript/tests/YGFlexBasisAuto.test.js b/javascript/tests/YGFlexBasisAuto.test.ts similarity index 93% rename from javascript/tests/YGFlexBasisAuto.test.js rename to javascript/tests/YGFlexBasisAuto.test.ts index c68d3c6d..e2408a72 100644 --- a/javascript/tests/YGFlexBasisAuto.test.js +++ b/javascript/tests/YGFlexBasisAuto.test.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; + test("flex_basis_auto", () => { const root = Yoga.Node.create(); diff --git a/javascript/tests/YGMeasureCacheTest.test.js b/javascript/tests/YGMeasureCacheTest.test.ts similarity index 82% rename from javascript/tests/YGMeasureCacheTest.test.js rename to javascript/tests/YGMeasureCacheTest.test.ts index 5f1ab3e0..a684eaa5 100644 --- a/javascript/tests/YGMeasureCacheTest.test.js +++ b/javascript/tests/YGMeasureCacheTest.test.ts @@ -5,6 +5,8 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; + import { getMeasureCounterMax } from "./tools/MeasureCounter"; test("measure_once_single_flexible_child", () => { @@ -14,14 +16,14 @@ test("measure_once_single_flexible_child", () => { root.setWidth(100); root.setHeight(100); - const measureCounter = getMeasureCounterMax(Yoga); + const measureCounter = getMeasureCounterMax(); const root_child0 = Yoga.Node.create(); root_child0.setMeasureFunc(measureCounter.inc); root_child0.setFlexGrow(1); root.insertChild(root_child0, 0); - root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR); + root.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR); expect(measureCounter.get()).toBe(1); diff --git a/javascript/tests/YGMeasureTest.test.js b/javascript/tests/YGMeasureTest.test.ts similarity index 86% rename from javascript/tests/YGMeasureTest.test.js rename to javascript/tests/YGMeasureTest.test.ts index 7703d223..16f3abf9 100644 --- a/javascript/tests/YGMeasureTest.test.js +++ b/javascript/tests/YGMeasureTest.test.ts @@ -5,6 +5,7 @@ * LICENSE file in the root directory of this source tree. */ +import { Yoga } from "./tools/globals"; import { getMeasureCounter } from "./tools/MeasureCounter"; test("dont_measure_single_grow_shrink_child", () => { @@ -19,7 +20,7 @@ test("dont_measure_single_grow_shrink_child", () => { root_child0.setFlexGrow(1); root_child0.setFlexShrink(1); root.insertChild(root_child0, 0); - root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR); + root.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR); expect(measureCounter.get()).toBe(0); @@ -27,8 +28,11 @@ test("dont_measure_single_grow_shrink_child", () => { }); test("dont_fail_with_incomplete_measure_dimensions", () => { + // @ts-expect-error Testing bad usage const heightOnlyCallback = getMeasureCounter(() => ({ height: 10 })); + // @ts-expect-error Testing bad usage const widthOnlyCallback = getMeasureCounter(() => ({ width: 10 })); + // @ts-expect-error Testing bad usage const emptyCallback = getMeasureCounter(() => ({})); const root = Yoga.Node.create(); @@ -47,7 +51,7 @@ test("dont_fail_with_incomplete_measure_dimensions", () => { node2.setMeasureFunc(widthOnlyCallback.inc); node3.setMeasureFunc(emptyCallback.inc); - root.calculateLayout(Yoga.UNDEFINED, Yoga.UNDEFINED, Yoga.DIRECTION_LTR); + root.calculateLayout(undefined, undefined, Yoga.DIRECTION_LTR); expect(heightOnlyCallback.get()).toBe(1); expect(widthOnlyCallback.get()).toBe(1);