2022-12-28 01:27:12 -08:00
/ * *
* Copyright ( c ) Meta Platforms , Inc . and affiliates .
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree .
2023-12-14 11:48:22 -08:00
*
2024-12-09 13:45:48 -08:00
* @generated SignedSource << d9428d2e524c7d665f61ccdad7697504 >>
2023-12-14 11:48:22 -08:00
* generated by gentest / gentest - driver . ts from gentest / fixtures / YGMinMaxDimensionTest . html
2022-12-28 01:27:12 -08:00
* /
2024-06-26 10:00:17 -07:00
import { instrinsicSizeMeasureFunc } from '../tools/utils.ts'
Consolidate JavaScript Flavors (#1433)
Summary:
Fixes https://github.com/facebook/yoga/issues/1417
This dramatically simplifies the matrix of Node vs web, ASM vs WASM, sync vs async compilation, or CommonJS vs ES Modules. We have one variant, using wasm, with ESModule top-level await to do async compilation. Web/node share the same binary, and we base64 encode the WASM into a wrapper JS file for compatibility with Node and bundlers.
This has some downsides, like requiring an environment with top level await, but also has upsides, like a consistent, sync looking API compatible with older Yoga, and mitigating TypeScript issues with package exports and typings resolution.
As part of this work I also removed `ts-node` from the toolchain (at the cost of a couple of config files needing to be vanilla JS).
Pull Request resolved: https://github.com/facebook/yoga/pull/1433
Test Plan:
1. `yarn test`
2. `yarn lint`
3. `yarn tsc`
4. `yarn benchmark`
5. `yarn build` website-next
6. `yarn lint` website-next
7. Locally test website-next
8. Examine package artifact created by GitHub
9. All Automation passes
Reviewed By: yungsters
Differential Revision: D50453324
Pulled By: NickGerleman
fbshipit-source-id: fe1192acc69e57fa69a1ff056dd7b5844d2198d5
2023-10-31 20:41:38 -07:00
import Yoga from 'yoga-layout' ;
2023-05-10 22:46:39 -07:00
import {
Align ,
2024-09-25 15:46:55 -07:00
BoxSizing ,
2023-05-10 22:46:39 -07:00
Direction ,
Display ,
Edge ,
Errata ,
ExperimentalFeature ,
FlexDirection ,
Gutter ,
Justify ,
MeasureMode ,
Overflow ,
PositionType ,
Unit ,
Wrap ,
} from 'yoga-layout' ;
2023-05-10 22:46:39 -07:00
test ( 'max_width' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setMaxWidth ( 50 ) ;
root_child0 . setHeight ( 10 ) ;
root . insertChild ( root_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 10 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 10 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'max_height' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setFlexDirection ( FlexDirection . Row ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setWidth ( 10 ) ;
root_child0 . setMaxHeight ( 50 ) ;
root . insertChild ( root_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 10 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 90 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 10 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test . skip ( 'min_height' , ( ) = > {
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2023-05-10 22:46:39 -07:00
root . setWidth ( 100 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root_child0 . setMinHeight ( 60 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setFlexGrow ( 1 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2023-05-10 22:46:39 -07:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 60 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 60 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 40 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2023-05-10 22:46:39 -07:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 60 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 60 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 40 ) ;
} finally {
if ( typeof root !== 'undefined' ) {
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
test . skip ( 'min_width' , ( ) = > {
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setFlexDirection ( FlexDirection . Row ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2023-05-10 22:46:39 -07:00
root . setWidth ( 100 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root_child0 . setMinWidth ( 60 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setFlexGrow ( 1 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2023-05-10 22:46:39 -07:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 60 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 60 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 40 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2023-05-10 22:46:39 -07:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 40 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 60 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 40 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
if ( typeof root !== 'undefined' ) {
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
test ( 'justify_content_min_max' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setJustifyContent ( Justify . Center ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setMinHeight ( 100 ) ;
root . setMaxHeight ( 200 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setWidth ( 60 ) ;
root_child0 . setHeight ( 60 ) ;
root . insertChild ( root_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 20 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 60 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 60 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 40 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 20 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 60 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 60 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'align_items_min_max' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setAlignItems ( Align . Center ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setMinWidth ( 100 ) ;
root . setMaxWidth ( 200 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setWidth ( 60 ) ;
root_child0 . setHeight ( 60 ) ;
root . insertChild ( root_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 20 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 60 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 60 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 20 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 60 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 60 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'justify_content_overflow_min_max' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setJustifyContent ( Justify . Center ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setMinHeight ( 100 ) ;
root . setMaxHeight ( 110 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setWidth ( 50 ) ;
root_child0 . setHeight ( 50 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setWidth ( 50 ) ;
root_child1 . setHeight ( 50 ) ;
root . insertChild ( root_child1 , 1 ) ;
const root_child2 = Yoga . Node . create ( config ) ;
root_child2 . setWidth ( 50 ) ;
root_child2 . setHeight ( 50 ) ;
root . insertChild ( root_child2 , 2 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 110 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( - 20 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 30 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child2 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child2 . getComputedTop ( ) ) . toBe ( 80 ) ;
expect ( root_child2 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child2 . getComputedHeight ( ) ) . toBe ( 50 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 110 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( - 20 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 30 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child2 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child2 . getComputedTop ( ) ) . toBe ( 80 ) ;
expect ( root_child2 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child2 . getComputedHeight ( ) ) . toBe ( 50 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_to_min' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setMinHeight ( 100 ) ;
root . setMaxHeight ( 500 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root_child0 . setFlexShrink ( 1 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setHeight ( 50 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_in_at_most_container' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setFlexDirection ( FlexDirection . Row ) ;
root . setAlignItems ( Align . FlexStart ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root_child0 . setFlexDirection ( FlexDirection . Row ) ;
2022-12-28 01:27:12 -08:00
root . insertChild ( root_child0 , 0 ) ;
const root_child0_child0 = Yoga . Node . create ( config ) ;
root_child0_child0 . setFlexGrow ( 1 ) ;
root_child0_child0 . setFlexBasis ( 0 ) ;
root_child0 . insertChild ( root_child0_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 0 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_child' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setFlexDirection ( FlexDirection . Row ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root_child0 . setFlexBasis ( 0 ) ;
root_child0 . setHeight ( 100 ) ;
root . insertChild ( root_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_within_constrained_min_max_column' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setMinHeight ( 100 ) ;
root . setMaxHeight ( 200 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setHeight ( 50 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_within_max_width' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 200 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root_child0 . setFlexDirection ( FlexDirection . Row ) ;
2022-12-28 01:27:12 -08:00
root_child0 . setMaxWidth ( 100 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child0_child0 = Yoga . Node . create ( config ) ;
root_child0_child0 . setFlexGrow ( 1 ) ;
root_child0_child0 . setHeight ( 20 ) ;
root_child0 . insertChild ( root_child0_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 20 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 20 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 20 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 20 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_within_constrained_max_width' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 200 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root_child0 . setFlexDirection ( FlexDirection . Row ) ;
2022-12-28 01:27:12 -08:00
root_child0 . setMaxWidth ( 300 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child0_child0 = Yoga . Node . create ( config ) ;
root_child0_child0 . setFlexGrow ( 1 ) ;
root_child0_child0 . setHeight ( 20 ) ;
root_child0 . insertChild ( root_child0_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 20 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 20 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 20 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 20 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_root_ignored' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setFlexGrow ( 1 ) ;
root . setWidth ( 100 ) ;
root . setMinHeight ( 100 ) ;
root . setMaxHeight ( 500 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root_child0 . setFlexBasis ( 200 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setHeight ( 100 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 300 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 200 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 200 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 300 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 200 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 200 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_root_minimized' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setMinHeight ( 100 ) ;
root . setMaxHeight ( 500 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root_child0 . setMinHeight ( 100 ) ;
root_child0 . setMaxHeight ( 500 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child0_child0 = Yoga . Node . create ( config ) ;
root_child0_child0 . setFlexGrow ( 1 ) ;
root_child0_child0 . setFlexBasis ( 200 ) ;
root_child0 . insertChild ( root_child0_child0 , 0 ) ;
const root_child0_child1 = Yoga . Node . create ( config ) ;
root_child0_child1 . setHeight ( 100 ) ;
root_child0 . insertChild ( root_child0_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 300 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 300 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 200 ) ;
expect ( root_child0_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child1 . getComputedTop ( ) ) . toBe ( 200 ) ;
expect ( root_child0_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 300 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 300 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 200 ) ;
expect ( root_child0_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child1 . getComputedTop ( ) ) . toBe ( 200 ) ;
expect ( root_child0_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_height_maximized' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setHeight ( 500 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root_child0 . setMinHeight ( 100 ) ;
root_child0 . setMaxHeight ( 500 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child0_child0 = Yoga . Node . create ( config ) ;
root_child0_child0 . setFlexGrow ( 1 ) ;
root_child0_child0 . setFlexBasis ( 200 ) ;
root_child0 . insertChild ( root_child0_child0 , 0 ) ;
const root_child0_child1 = Yoga . Node . create ( config ) ;
root_child0_child1 . setHeight ( 100 ) ;
root_child0 . insertChild ( root_child0_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 500 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 500 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 400 ) ;
expect ( root_child0_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child1 . getComputedTop ( ) ) . toBe ( 400 ) ;
expect ( root_child0_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 500 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 500 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 400 ) ;
expect ( root_child0_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child1 . getComputedTop ( ) ) . toBe ( 400 ) ;
expect ( root_child0_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_within_constrained_min_row' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setFlexDirection ( FlexDirection . Row ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setMinWidth ( 100 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setWidth ( 50 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_within_constrained_min_column' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setMinHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setHeight ( 50 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_within_constrained_max_row' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 200 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root_child0 . setFlexDirection ( FlexDirection . Row ) ;
2022-12-28 01:27:12 -08:00
root_child0 . setMaxWidth ( 100 ) ;
root_child0 . setHeight ( 100 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child0_child0 = Yoga . Node . create ( config ) ;
root_child0_child0 . setFlexShrink ( 1 ) ;
root_child0_child0 . setFlexBasis ( 100 ) ;
root_child0 . insertChild ( root_child0_child0 , 0 ) ;
const root_child0_child1 = Yoga . Node . create ( config ) ;
root_child0_child1 . setWidth ( 50 ) ;
root_child0 . insertChild ( root_child0_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child1 . getComputedLeft ( ) ) . toBe ( 50 ) ;
expect ( root_child0_child1 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child1 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child0 . getComputedLeft ( ) ) . toBe ( 50 ) ;
expect ( root_child0_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child0 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0_child0 . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child1 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0_child1 . getComputedWidth ( ) ) . toBe ( 50 ) ;
expect ( root_child0_child1 . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'flex_grow_within_constrained_max_column' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setMaxHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexShrink ( 1 ) ;
root_child0 . setFlexBasis ( 100 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setHeight ( 50 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'child_min_max_width_flexing' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setFlexDirection ( FlexDirection . Row ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 120 ) ;
root . setHeight ( 50 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setFlexGrow ( 1 ) ;
root_child0 . setFlexBasis ( 0 ) ;
root_child0 . setMinWidth ( 60 ) ;
root . insertChild ( root_child0 , 0 ) ;
const root_child1 = Yoga . Node . create ( config ) ;
root_child1 . setFlexGrow ( 1 ) ;
root_child1 . setFlexBasis ( "50%" ) ;
root_child1 . setMaxWidth ( 20 ) ;
root . insertChild ( root_child1 , 1 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 120 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 100 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 20 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 120 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 20 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 50 ) ;
expect ( root_child1 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child1 . getComputedWidth ( ) ) . toBe ( 20 ) ;
expect ( root_child1 . getComputedHeight ( ) ) . toBe ( 50 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'min_width_overrides_width' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 50 ) ;
root . setMinWidth ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 0 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'max_width_overrides_width' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 200 ) ;
root . setMaxWidth ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 0 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'min_height_overrides_height' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setHeight ( 50 ) ;
root . setMinHeight ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'max_height_overrides_height' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setHeight ( 200 ) ;
root . setMaxHeight ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2023-05-10 22:46:39 -07:00
test ( 'min_max_percent_no_width_height' , ( ) = > {
2022-12-28 01:27:12 -08:00
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
2023-05-10 22:46:39 -07:00
root . setAlignItems ( Align . FlexStart ) ;
2023-10-23 18:20:24 -07:00
root . setPositionType ( PositionType . Absolute ) ;
2022-12-28 01:27:12 -08:00
root . setWidth ( 100 ) ;
root . setHeight ( 100 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setMinWidth ( "10%" ) ;
root_child0 . setMaxWidth ( "10%" ) ;
root_child0 . setMinHeight ( "10%" ) ;
root_child0 . setMaxHeight ( "10%" ) ;
root . insertChild ( root_child0 , 0 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 10 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 10 ) ;
2023-05-10 22:46:39 -07:00
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
2022-12-28 01:27:12 -08:00
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 100 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 100 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 90 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 10 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 10 ) ;
} finally {
2023-05-10 22:46:39 -07:00
if ( typeof root !== 'undefined' ) {
2022-12-28 01:27:12 -08:00
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;
2024-12-09 13:45:48 -08:00
test ( 'min_width_leaf_node_bigger_than_width' , ( ) = > {
const config = Yoga . Config . create ( ) ;
let root ;
try {
root = Yoga . Node . create ( config ) ;
root . setPositionType ( PositionType . Absolute ) ;
root . setWidth ( 200 ) ;
const root_child0 = Yoga . Node . create ( config ) ;
root_child0 . setWidth ( 200 ) ;
root_child0 . setMinWidth ( 10000 ) ;
root . insertChild ( root_child0 , 0 ) ;
root_child0 . setMeasureFunc ( instrinsicSizeMeasureFunc . bind ( "Lorem ipsum sdafhasdfkjlasdhlkajsfhasldkfhasdlkahsdflkjasdhflaksdfasdlkjhasdlfjahsdfljkasdhalsdfhas dolor sit amet" ) ) ;
root . calculateLayout ( undefined , undefined , Direction . LTR ) ;
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 10 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 10000 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 10 ) ;
root . calculateLayout ( undefined , undefined , Direction . RTL ) ;
expect ( root . getComputedLeft ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root . getComputedWidth ( ) ) . toBe ( 200 ) ;
expect ( root . getComputedHeight ( ) ) . toBe ( 10 ) ;
expect ( root_child0 . getComputedLeft ( ) ) . toBe ( - 9800 ) ;
expect ( root_child0 . getComputedTop ( ) ) . toBe ( 0 ) ;
expect ( root_child0 . getComputedWidth ( ) ) . toBe ( 10000 ) ;
expect ( root_child0 . getComputedHeight ( ) ) . toBe ( 10 ) ;
} finally {
if ( typeof root !== 'undefined' ) {
root . freeRecursive ( ) ;
}
config . free ( ) ;
}
} ) ;