diff --git a/CHANGELOG.md b/CHANGELOG.md index 22c22329fa..af594141cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,8 +8,13 @@ The format is *loosely* based on [Keep a Changelog](https://keepachangelog.com/e ### Fixed +- *de.itemis.mps.extensions.build* Version number is now set correctly in the `build.properties` file inside the published artifact. - *de.itemis.mps.editor.bool.runtime* Improve loading of checkbox images to work in scenarios where the node being edited is not part of a model (even if only temporarily). +### Changed + +- *de.itemis.mps.extensions.build* The version number property was renamed from `versionNumber` to `version`. + ## September 2025 ### Added @@ -30,6 +35,7 @@ The format is *loosely* based on [Keep a Changelog](https://keepachangelog.com/e - *de.itemis.mps.compare* Added support for ignoring references. - *de.itemis.mps.linenumbers* When clicking on a line number, the first cell in the line gets the focus. - *nl.f1re.mps.editor.swing* Add a new language for customizing swing components. +- *nl.f1re.mpsutil.hasher* Added efficient, configurable hashing of subtrees. ### Fixed diff --git a/README.md b/README.md index 6f8c40e52d..f4942fb9f7 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ To use MPS Extensions in your project, add one of the following dependencies to ## Building -See the [building](https://jetbrains.github.io/MPS-extensions/building/) page of the documentation. +See the [building](docs/building.md) page of the documentation. ## Documentation diff --git a/code/.mps/modules.xml b/code/.mps/modules.xml index a47c29a1df..820c02eea9 100644 --- a/code/.mps/modules.xml +++ b/code/.mps/modules.xml @@ -116,6 +116,7 @@ + @@ -223,6 +224,10 @@ + + + + diff --git a/code/build/solutions/de.itemis.mps.extensions.build/models/de.itemis.mps.extensions.build.mps b/code/build/solutions/de.itemis.mps.extensions.build/models/de.itemis.mps.extensions.build.mps index 07f254eaa8..34cc17b912 100644 --- a/code/build/solutions/de.itemis.mps.extensions.build/models/de.itemis.mps.extensions.build.mps +++ b/code/build/solutions/de.itemis.mps.extensions.build/models/de.itemis.mps.extensions.build.mps @@ -257,7 +257,7 @@ - + @@ -366,7 +366,7 @@ - + @@ -615,7 +615,7 @@ - + @@ -759,7 +759,7 @@ - + @@ -877,7 +877,7 @@ - + @@ -1347,7 +1347,7 @@ - + @@ -1910,7 +1910,7 @@ - + @@ -3279,7 +3279,7 @@ - + @@ -3797,7 +3797,7 @@ - + @@ -4176,7 +4176,7 @@ - + @@ -4430,7 +4430,7 @@ - + @@ -4809,7 +4809,7 @@ - + @@ -5169,7 +5169,7 @@ - + @@ -6339,7 +6339,7 @@ - + @@ -6473,7 +6473,7 @@ - + @@ -6842,7 +6842,7 @@ - + @@ -6874,6 +6874,9 @@ + + + @@ -6906,11 +6909,6 @@ - - - - - @@ -6954,11 +6952,6 @@ - - - - - @@ -6992,6 +6985,11 @@ + + + + + @@ -7020,6 +7018,11 @@ + + + + + @@ -7105,8 +7108,8 @@ - - + + @@ -7131,6 +7134,287 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7145,7 +7429,7 @@ - + @@ -7771,7 +8055,7 @@ - + @@ -8783,7 +9067,7 @@ - + @@ -9317,7 +9601,7 @@ - + @@ -9440,7 +9724,7 @@ - + @@ -9742,7 +10026,7 @@ - + @@ -10006,7 +10290,7 @@ - + @@ -10242,7 +10526,7 @@ - + @@ -10304,7 +10588,7 @@ - + @@ -10337,7 +10621,7 @@ - + @@ -10373,7 +10657,7 @@ - + @@ -10406,7 +10690,7 @@ - + @@ -13753,7 +14037,7 @@ - + @@ -14147,7 +14431,7 @@ - + @@ -14475,7 +14759,7 @@ - + @@ -14763,7 +15047,7 @@ - + @@ -15003,7 +15287,7 @@ - + @@ -15405,7 +15689,7 @@ - + @@ -15525,7 +15809,7 @@ - + @@ -15638,7 +15922,7 @@ - + @@ -15997,7 +16281,7 @@ - + @@ -16269,7 +16553,7 @@ - + @@ -16483,7 +16767,7 @@ - + @@ -17559,7 +17843,7 @@ - + @@ -17735,7 +18019,7 @@ - + @@ -18053,6 +18337,10 @@ + + + + @@ -18856,11 +19144,16 @@ - - + + + + + + + @@ -25151,6 +25444,334 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/compare/languages/de.itemis.mps.compare/compare.mpl b/code/compare/languages/de.itemis.mps.compare/compare.mpl index 441e752257..d9c16a4dfe 100644 --- a/code/compare/languages/de.itemis.mps.compare/compare.mpl +++ b/code/compare/languages/de.itemis.mps.compare/compare.mpl @@ -87,7 +87,6 @@ - @@ -106,6 +105,7 @@ + diff --git a/code/compare/solutions/de.itemis.mps.comparator.diff.tests/de.itemis.mps.comparator.diff.tests.msd b/code/compare/solutions/de.itemis.mps.comparator.diff.tests/de.itemis.mps.comparator.diff.tests.msd index 86129027c2..fbedf0a017 100644 --- a/code/compare/solutions/de.itemis.mps.comparator.diff.tests/de.itemis.mps.comparator.diff.tests.msd +++ b/code/compare/solutions/de.itemis.mps.comparator.diff.tests/de.itemis.mps.comparator.diff.tests.msd @@ -76,7 +76,6 @@ - @@ -84,6 +83,7 @@ + diff --git a/code/modellisteners/test.com.mbeddr.mpsutil.modellisteners/models/test.com.mbeddr.mpsutil.modellisteners@tests.mps b/code/modellisteners/test.com.mbeddr.mpsutil.modellisteners/models/test.com.mbeddr.mpsutil.modellisteners@tests.mps new file mode 100644 index 0000000000..28a830ade7 --- /dev/null +++ b/code/modellisteners/test.com.mbeddr.mpsutil.modellisteners/models/test.com.mbeddr.mpsutil.modellisteners@tests.mps @@ -0,0 +1,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/modellisteners/test.com.mbeddr.mpsutil.modellisteners/test.com.mbeddr.mpsutil.modellisteners.msd b/code/modellisteners/test.com.mbeddr.mpsutil.modellisteners/test.com.mbeddr.mpsutil.modellisteners.msd new file mode 100644 index 0000000000..9600fa8e6d --- /dev/null +++ b/code/modellisteners/test.com.mbeddr.mpsutil.modellisteners/test.com.mbeddr.mpsutil.modellisteners.msd @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + 4cbe8d8b-9aa4-4342-8d1a-f3bcd858d0e8(com.mbeddr.mpsutil.modellisteners.sandboxlang) + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps b/code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps index 6b8170599b..e969c6f234 100644 --- a/code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps +++ b/code/solutions/de.itemis.mps.extensions.changelog/models/de.itemis.mps.extensions.changelog.mps @@ -234,94 +234,189 @@ - - + + - - - - - + + + + + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/tables/solutions/test.de.slisson.mps.tables/models/test/de/slisson/mps/tables@tests.mps b/code/tables/solutions/test.de.slisson.mps.tables/models/test/de/slisson/mps/tables@tests.mps index 677b980b6f..a4e502d4a8 100644 --- a/code/tables/solutions/test.de.slisson.mps.tables/models/test/de/slisson/mps/tables@tests.mps +++ b/code/tables/solutions/test.de.slisson.mps.tables/models/test/de/slisson/mps/tables@tests.mps @@ -12,6 +12,7 @@ + @@ -28,15 +29,18 @@ - + + + + - - - - + + + + @@ -89,6 +93,7 @@ + @@ -208,10 +213,31 @@ + + + + + + + + + + + + + + + + + + + + + @@ -253,6 +279,19 @@ + + + + + + + + + + + + + @@ -268,6 +307,10 @@ + + + + @@ -312,6 +355,13 @@ + + + + + + + @@ -4704,5 +4754,372 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/tables/solutions/test.de.slisson.mps.tables/test.de.slisson.mps.tables.msd b/code/tables/solutions/test.de.slisson.mps.tables/test.de.slisson.mps.tables.msd index 5de171707d..ca6361b192 100644 --- a/code/tables/solutions/test.de.slisson.mps.tables/test.de.slisson.mps.tables.msd +++ b/code/tables/solutions/test.de.slisson.mps.tables/test.de.slisson.mps.tables.msd @@ -18,9 +18,11 @@ 2d56439e-634d-4d25-9d30-963e89ecda48(de.slisson.mps.tables.demolang) 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK) 34e84b8f-afa8-4364-abcd-a279fddddbe7(jetbrains.mps.editor.runtime) + 1144260c-e9a5-49a2-9add-39a1a1a7077e(de.itemis.mps.editor.diagram.runtime) + @@ -44,7 +46,12 @@ + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/generator/templates/nl.f1re.testing.examples.lang.generator.templates@generator.mps b/code/testing/languages/nl.f1re.testing.examples.lang/generator/templates/nl.f1re.testing.examples.lang.generator.templates@generator.mps new file mode 100644 index 0000000000..f43140ad33 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/generator/templates/nl.f1re.testing.examples.lang.generator.templates@generator.mps @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.behavior.mps b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.behavior.mps new file mode 100644 index 0000000000..fc8fcd3483 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.behavior.mps @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.constraints.mps b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.constraints.mps new file mode 100644 index 0000000000..a728b2a32d --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.constraints.mps @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.editor.mps b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.editor.mps new file mode 100644 index 0000000000..253f639cf9 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.editor.mps @@ -0,0 +1,404 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.intentions.mps b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.intentions.mps new file mode 100644 index 0000000000..86514531ae --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.intentions.mps @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.structure.mps b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.structure.mps new file mode 100644 index 0000000000..05ebb28a90 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.structure.mps @@ -0,0 +1,118 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.typesystem.mps b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.typesystem.mps new file mode 100644 index 0000000000..820b1dd361 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.typesystem.mps @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.vcs.mps b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.vcs.mps new file mode 100644 index 0000000000..4aee90aab5 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/models/nl.f1re.testing.examples.lang.vcs.mps @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing.examples.lang/nl.f1re.testing.examples.lang.mpl b/code/testing/languages/nl.f1re.testing.examples.lang/nl.f1re.testing.examples.lang.mpl new file mode 100644 index 0000000000..00a0315b5e --- /dev/null +++ b/code/testing/languages/nl.f1re.testing.examples.lang/nl.f1re.testing.examples.lang.mpl @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + c7fb639f-be78-4307-89b0-b5959c3fa8c8(jetbrains.mps.lang.text) + 1ed103c3-3aa6-49b7-9c21-6765ee11f224(MPS.Editor) + f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing/generator/templates/nl.f1re.testing.generator.templates@generator.mps b/code/testing/languages/nl.f1re.testing/generator/templates/nl.f1re.testing.generator.templates@generator.mps new file mode 100644 index 0000000000..e135085de0 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing/generator/templates/nl.f1re.testing.generator.templates@generator.mps @@ -0,0 +1,171 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.editor.mps b/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.editor.mps new file mode 100644 index 0000000000..62646262af --- /dev/null +++ b/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.editor.mps @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.structure.mps b/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.structure.mps new file mode 100644 index 0000000000..1f32c7e751 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.structure.mps @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.typesystem.mps b/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.typesystem.mps new file mode 100644 index 0000000000..5061d12295 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing/models/nl.f1re.testing.typesystem.mps @@ -0,0 +1,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/languages/nl.f1re.testing/nl.f1re.testing.mpl b/code/testing/languages/nl.f1re.testing/nl.f1re.testing.mpl new file mode 100644 index 0000000000..4556cf5381 --- /dev/null +++ b/code/testing/languages/nl.f1re.testing/nl.f1re.testing.mpl @@ -0,0 +1,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + 707c4fde-f79a-44b5-b3d7-b5cef8844ccf(jetbrains.mps.lang.test.runtime) + 1ed103c3-3aa6-49b7-9c21-6765ee11f224(MPS.Editor) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1ed103c3-3aa6-49b7-9c21-6765ee11f224(MPS.Editor) + 654422bf-e75f-44dc-936d-188890a746ce(de.slisson.mps.reflection) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + f4eaf5cb-c1e6-4968-831c-c28a93349488(nl.f1re.testing.runtime) + + + f3061a53-9226-4cc5-a443-f952ceaf5816(jetbrains.mps.baseLanguage) + + + diff --git a/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.examples.plugin.mps b/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.examples.plugin.mps new file mode 100644 index 0000000000..5ce6f68451 --- /dev/null +++ b/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.examples.plugin.mps @@ -0,0 +1,221 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.examples@tests.mps b/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.examples@tests.mps new file mode 100644 index 0000000000..e925849fe4 --- /dev/null +++ b/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.examples@tests.mps @@ -0,0 +1,6651 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.inputModel@tests.mps b/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.inputModel@tests.mps new file mode 100644 index 0000000000..398bbb548d --- /dev/null +++ b/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.inputModel@tests.mps @@ -0,0 +1,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.outputModel@tests.mps b/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.outputModel@tests.mps new file mode 100644 index 0000000000..bf91ad1a35 --- /dev/null +++ b/code/testing/solutions/nl.f1re.testing.examples/models/nl.f1re.testing.outputModel@tests.mps @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/solutions/nl.f1re.testing.examples/nl.f1re.testing.examples.msd b/code/testing/solutions/nl.f1re.testing.examples/nl.f1re.testing.examples.msd new file mode 100644 index 0000000000..772cdd0905 --- /dev/null +++ b/code/testing/solutions/nl.f1re.testing.examples/nl.f1re.testing.examples.msd @@ -0,0 +1,109 @@ + + + + + + + + + + + + + + + c0080a47-7e37-4558-bee9-9ae18e690549(jetbrains.mps.lang.extension) + 5b1f863d-65a0-41a6-a801-33896be24202(jetbrains.mps.ide.editor) + 1ed103c3-3aa6-49b7-9c21-6765ee11f224(MPS.Editor) + f4eaf5cb-c1e6-4968-831c-c28a93349488(nl.f1re.testing.runtime) + d7a92d38-f7db-40d0-8431-763b0c3c9f20(jetbrains.mps.lang.intentions) + 87e083b3-d1b3-4c3f-9d8c-b24d74710f49(nl.f1re.testing.examples.lang) + 707c4fde-f79a-44b5-b3d7-b5cef8844ccf(jetbrains.mps.lang.test.runtime) + 39983771-4e9b-401b-a1a9-1da6c777c843(MPS.ThirdParty) + 215c4c45-ba99-49f5-9ab7-4b6901a63cfd(MPS.Generator) + c6420b75-4569-420d-aaf7-9bc590ad7b2a(de.itemis.mps.comparator) + 73a71448-99c6-4925-ae2a-2cb0801adee3(jetbrains.mps.ide.tools.todo) + 86441d7a-e194-42da-81a5-2161ec62a379(MPS.Workbench) + 22250116-183c-4e90-8450-b6a13dd8998b(jetbrains.mps.baseLanguage.execution.util) + 14abba35-d008-451b-8562-9bfe66c43bd0(de.itemis.mps.debug.runtime) + 398d67d2-c2e9-11e2-ad49-6cf049e62ea4(jetbrains.mps.kotin.ui.dsl) + 85836058-a162-41d7-bb1d-52e99d873f28(jetbrains.mps.ide.vcs.core) + 63089e65-5c76-4c44-9eb6-15698b4444cf(jetbrains.mps.vcs.mergehints.runtime) + 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/solutions/nl.f1re.testing.runtime/models/nl.f1re.testing.runtime.mps b/code/testing/solutions/nl.f1re.testing.runtime/models/nl.f1re.testing.runtime.mps new file mode 100644 index 0000000000..a31cfca5d6 --- /dev/null +++ b/code/testing/solutions/nl.f1re.testing.runtime/models/nl.f1re.testing.runtime.mps @@ -0,0 +1,4280 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/code/testing/solutions/nl.f1re.testing.runtime/nl.f1re.testing.runtime.msd b/code/testing/solutions/nl.f1re.testing.runtime/nl.f1re.testing.runtime.msd new file mode 100644 index 0000000000..1c022740ef --- /dev/null +++ b/code/testing/solutions/nl.f1re.testing.runtime/nl.f1re.testing.runtime.msd @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + 6354ebe7-c22a-4a0f-ac54-50b52ab9b065(JDK) + 498d89d2-c2e9-11e2-ad49-6cf049e62fe5(MPS.IDEA) + 6ed54515-acc8-4d1e-a16c-9fd6cfe951ea(MPS.Core) + 742f6602-5a2f-4313-aa6e-ae1cd4ffdc61(MPS.Platform) + af52e9df-2136-4ef8-81b2-bec0babe5e4c(jetbrains.mps.lang.editor.tooltips.runtime) + 34e84b8f-afa8-4364-abcd-a279fddddbe7(jetbrains.mps.editor.runtime) + 2d3c70e9-aab2-4870-8d8d-6036800e4103(jetbrains.mps.kernel) + 36c11d2d-1875-4a95-8bdb-70ea1ac63222(jetbrains.mps.execution.api) + 49808fad-9d41-4b96-83fa-9231640f6b2b(JUnit) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/docs/building.md b/docs/building.md index d6de8a5556..a7af84b247 100644 --- a/docs/building.md +++ b/docs/building.md @@ -5,13 +5,12 @@ hide: # Building -The MPS extensions are built using [Gradle](https://docs.gradle.org/current/userguide/getting_started.html). To build the source code, all you need on the machine is a Java JDK. You need the following JDK versions depending on the MPS version: +MPS-extensions are built using [Gradle](https://docs.gradle.org/current/userguide/getting_started.html). To build the source code, all you need on the machine is a Java JDK. You need the following JDK versions depending on the MPS version: - 2024.1 and higher: JDK 21 - 2022.2 and higher: JDK 17 - older versions: JDK 11 - ancient versions: JDK 8 - If you want to contribute to MPS-extensions, you need MPS. The current used MPS version can be found in the [version catalog](https://github.com/JetBrains/MPS-extensions/blob/master/gradle/libs.versions.toml) file. Run the following commands to build the project: @@ -32,6 +31,12 @@ The default task does not run the tests as part of the build. Execute the follow gradlew.bat build # Windows ``` +This will fetch the required MPS version from the internet, so you need to be online when first executing the build. + +The above will also run tests. There are other tasks available, e.g. to run the build without tests (`assemble`) or only +download the required dependencies so that the project can be opened in MPS (`setup`). Run `./gradlew tasks` to see +available tasks. + The documentation is built using [Material for MkDocs](https://squidfunk.github.io/mkdocs-material/) and Python 3. It can be previewed by running: ```fish diff --git a/docs/extensions/full_extensions_list.md b/docs/extensions/full_extensions_list.md index ddb56e56fd..eed317e05b 100644 --- a/docs/extensions/full_extensions_list.md +++ b/docs/extensions/full_extensions_list.md @@ -35,7 +35,13 @@ This is a full list of all the extensions that are contained in MPS-extensions. | *de.slisson.mps.tables* | tabular notation for MPS editors | | *de.itemis.mps.linenumbers* | line numbers for the editor | | *de.itemis.mps.editor.htmlcell* | HTML-based editor cells | -| *de.itemis.mps.editor.pagination* | An editor cell for paginating collections of nodes | +| *de.itemis.mps.editor.pagination* + +**Testing** + +| Name | Description | +|-------------------|-----------------------------| +| *nl.f1re.testing* | utility classes for testing | **Generator** diff --git a/docs/extensions/testing.md b/docs/extensions/testing.md new file mode 100644 index 0000000000..22cf4fd349 --- /dev/null +++ b/docs/extensions/testing.md @@ -0,0 +1,152 @@ +# Testing + +**Language Namespace :** `nl.f1re.testing` + +This language contains utility classes to help with writing tests and +a concept `fileNodeEditor` to get access to the (IntelliJ) editor of the testcase ([MPSFileNodeEditor](http://127.0.0.1:63320/node?ref=1ed103c3-3aa6-49b7-9c21-6765ee11f224%2Fjava%3Ajetbrains.mps.ide.editor%28MPS.Editor%2F%29%2F~MPSFileNodeEditor)). +All helper classes assume no read/write access to the model. +When a class needs an editor cell, you can pass it, for example, through + +- `editor component.findNodeCell(node)` +- `editor component.getSelectedCell()` + +If you are in a nodes test case and not an editor test case, you need an editor component first: +```java +HeadlessEditorComponent component = new HeadlessEditorComponent(); +component.editNode(node); +``` + +## Asserts + +*void assertFails(ThrowableRunnable)* - checks that a code block fails or makes the test fail otherwise. + +```java title="Successful assert" +Asserts.assertFails(new ThrowableRunnable() { + @Override + public void run() throws Throwable { + throw new RuntimeException(); + } +}) +``` + +```java title="Failing assert" +Asserts.assertFails(new ThrowableRunnable() { + @Override + public void run() throws Throwable { + System.out.println("No exception"); + } +}) +``` + +## EditorCellTestHelper + +This class contains methods that help with editor cells. An `EditorCell` must be passed as an argument. + +- *node<> getLinkedNode()* - returns the referenced node of a hyperlink. +- *void focus()* - change the selection to the cell and also set the focus. +- *EditorCell_Collection getToolTipCell()* - returns the root cell of the tooltip if the cell has a tooltip. + +## EditorComponentTestHelper + +This class contains methods that help with manipulating the editor. An `EditorComponent` must be passed as an argument. + +- *void increaseUIScale()* - increase the editor scale by 20% and rebuild the editor afterwards + ``` java title="Example: Increase the editor scaling (needs the reflection language)" + new EditorComponentTestHelper(editor component).increaseUIScale(); + ``` + + - *void decreaseUIScale()* - decrease the editor scale by 20% and rebuild the editor afterwards + ``` java title="Example: Increase the editor scaling (needs the reflection language)" + new EditorComponentTestHelper(editor component).increaseUIScale(); + ``` + + - *void resetUIScale()* - reset the editor scale and rebuild the editor afterwards + ``` java title="Example: Increase the editor scaling (needs the reflection language)" + new EditorComponentTestHelper(editor component).increaseUIScale(); + ``` + +- *ContextAssistantManager openContextAssistant()* - Opens the [context assistant](https://www.jetbrains.com/help/mps/context-assistant.html) in the editor. + +## IntentionTester + +This class contains methods to work with intentions. An `EditorContext` must be passed as an argument as well as the information if surround intentions should be found. + +- *Pair getSingleMatchingIntention(node, intentionCondition)* - returns a single intention that can be applied for the node that matches a condition + +``` java title="Example: Read the description of a specific intention" +node<> intention = node-ptr/ClassConceptNewName/.resolve(repository); +Pair matchingIntention = new IntentionTester(editorContext).getSingleMatchingIntention(node, new MatchIntentionById(intention.getFqName() + "_Intention")); +string description = matchingIntention.o1.getDescription(node, editorContext); +``` + +## PlatformTestHelper + +This classes contains utility methods for testing the IntelliJ platform. An `jetbrains.mps.project.Project` must be passed as an argument. + +- *void withClipboardData(action, data)* - temporarily set the clipboard data to a certain string and execute an action + +```java title="Example: Paste the text 'test' into the MPS editor." +new PlatformTestHelper(project).withClipboardData({ => + try { + invoke action by id: $Paste + } catch (Exception e) { + fail : e.getMessage(); + } +}, "test") +``` + +- *void findNotification(triggerNotification,action,timeout)* - create a new notification and wait a certain time for it to appear + +```java title="Example: Create a notification and assert its title and content." +new PlatformTestHelper(project).findNotification({ => + NotificationGroup group = new NotificationGroup("TestGroup", NotificationDisplayType.BALLOON, true); + Notification notification = group.createNotification("Title", "Content", NotificationType.INFORMATION); + Notifications.Bus.notify(notification, ProjectHelper.toIdeaProject(project)); +}, {notification => + assert "Title" equals notification.getTitle() ; + assert "Content" equals notification.getContent() ; + assert NotificationType.INFORMATION equals notification.getType() ; +}, 1000) +``` + +- *void withPowerSaveModelEnabled(code)* - execute code while the [power save mode](https://www.jetbrains.com/help/mps/status-bar.html#status-bar-icons) enabled.# + +- *void assertHasFatalError(errorText)* - assert that the IDE threw an exception in the lower right corner. + +```java title="Example: Assert a fatal error" +MessagePool.getInstance().addIdeFatalMessage(new IdeaLoggingEvent("my error", new Throwable())); +PlatformTestHelper platformTestHelper = new PlatformTestHelper(project); +platformTestHelper.assertHasFatalError(null); +platformTestHelper.assertHasFatalError("my error"); +``` + +## ProjectTestHelper + +This class contains helper methods that needs a project as an argument. An `jetbrains.mps.project.Project` must be passed as an argument to this class. + +- *void reloadModule(module)* - reload a module +- *void reloadModules(modules)* - reload a list of modules +- *void reloadAll()* - reload all modules + +```java title="Example: Reload a module" +new ProjectTestHelper(project).withClassLoading({manager => manager.reloadModule(model/.getModule()); }); +``` + +- *list getOpenEditors()* - returns a list of opened editors or an empty list instead. + +- *MPSFileNodeEditor getActiveEditor()* - returns the currently selected opened editor. + +- *void closeOpenEditors()* - close all open editors + +- *void assertEditorNotBroken(node)* - assert that the editor for the node can be created. It catches exception where an editor cell can't be created. + +# TypesystemTestUtil + +This class contains helper methods for testing the typesystem. + +- *Duration measureTypesystemPerformance(model)* - tests how long it takes to execute all typesystem checks for a model. + +```java title="Example: Check that the typesystem checks take less than 1000ms" +Duration duration = TypesystemTestUtil.measureTypesystemPerformance(modelToCheck); +assert true duration.compareTo(Duration.ofMillis(10000)) < 0 : "check executed in more than 1000ms"; +``` \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 7631f8fcf2..bf4580efe7 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -124,6 +124,7 @@ nav: - Shadow Models: extensions/other/shadow-models.md - Changelog: extensions/other/changelog.md - Stubs: extensions/stubs.md + - Testing: extensions/testing.md - Utilities: - Intentions Menu: extensions/utils/intentions-menu.md - Model Listener: extensions/utils/model-listener.md