## Run: `./gradlew build -Pcompose.kotlinCompilerPluginVersion=1.4.2-rc03 -Pkotlin.version=1.8.10` to build and run the tests, or `./gradlew allTests -Pcompose.kotlinCompilerPluginVersion=1.4.2-rc03 -Pkotlin.version=1.8.10` to only run the tests. It will build and run the tests for all available targets (depends on a host machine). See [TargetsConfiguration](./buildSrc/src/main/kotlin/TargetsConfiguration.kt) to update the targets. ## Test cases #### Directory: `./testcases` Every test case contains a simple project with 2 or more modules with applied Compose plugin. The goal of such a project is to check a specific case of Composable usage. A test case ensures that the code compiles and behaves as expected when running. A test case contains 2 or more modules to check crossmodule compilation (the test dependencies should be placed in a `...-lib` module). See a test case [template](./testcases/template) for an example. Splitting the test cases into separate small projects helps in distinguishing the potential compilation bugs. The behaviour is checked by the tests in a `...-main` module of a test case. The tests create a simple text Composition and then compares the text dump with an expected value. Example: ```kotlin @Test fun testExample2() = runTest { val root = composeText { TextLeafNode("Leaf") TextContainerNode("node") { TextLeafNode("child1") TextLeafNode("child2") TextLeafNode("child3") } } assertEquals("root:{Leaf, node:{child1, child2, child3}}", root.dump()) } ``` The API for the text Composition is implemented in the [common](./common) module. More test examples (including recomposition cases) can be found [here](./common/src/commonTest). ### To add a new test case: - Use `/testcases/template` as a starting point (copy it and rename). Place a new testcase in `/testcases` folder. - Add new modules in `settings.gradle.kts` - Please follow the naming convention for modules. Their names should end with `-lib` or `-main`. We need 2 modules (`...-lib` and `...-main`) to test crossmodule compilation. Place the test dependencies in a `...-lib` module.