From 0b64f3acd09335da3ff13d8af4abcacb401392da Mon Sep 17 00:00:00 2001 From: Maria Cristescu Date: Wed, 23 Jul 2025 12:20:18 +0200 Subject: [PATCH 1/7] Initial test --- .../ide/server/ChangeDetectionTest.java | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java index bad255c07..6f65be0f0 100644 --- a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java +++ b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java @@ -2,6 +2,7 @@ import org.eclipse.lsp4j.Diagnostic; import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import com.regnosys.rosetta.ide.tests.AbstractRosettaLanguageServerValidationTest; @@ -320,4 +321,49 @@ enum Y: Q // There should again be no issue. assertNoIssues(); } + + + @Test + @Disabled + void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues() { + String nsA = createModel("a.rosetta", """ + namespace demo.emissions.model + + enum Y: <"Text"> + Q + R + S + """); + String nsB = createModel("b.rosetta", """ + namespace b + + type X: x string (1..1) + reporting rule R from X: + c.Z ->> attr2 + filter + item = Q + or item = R + or item = S + """); + String nsC = createModel("c.rosetta", """ + namespace a + + type Z: <"Text"> + attr1 int (1..1) + attr2 Y (1..1) + """); + + // There should be no issue. + assertNoIssues(); + + makeChange(nsA, 2, 14, "\"", ""); + List issues = getDiagnostics().get(nsB); + + assertIssues("Error [[4, 8] .. [4, 9]]: Couldn't resolve reference to RosettaFeature 'Q'.\n", issues); + + makeChange(nsA, 2, 14, "", "\""); + + // There should again be no issue. + assertNoIssues(); + } } From 64ff7fdb00a48210687cb531e6421b3113ce370d Mon Sep 17 00:00:00 2001 From: Maria Cristescu Date: Tue, 5 Aug 2025 12:16:47 +0200 Subject: [PATCH 2/7] Update test --- .../ide/server/ChangeDetectionTest.java | 106 +++++++++++++----- 1 file changed, 80 insertions(+), 26 deletions(-) diff --git a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java index 6f65be0f0..081d92669 100644 --- a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java +++ b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java @@ -323,45 +323,99 @@ enum Y: Q } +// @Test +// @Disabled +// void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues() { +// String nsA = createModel("enum.rosetta", """ +// namespace demo.a +// +// enum Y: <"Text"> +// Q +// R +// S +// """); +// String nsA2 = createModel("type.rosetta", """ +// namespace demo.b +// +// import demo.a.* +// +// type X: x Z (1..1) +// +// type Z: <"Text"> +// attr1 int (1..1) +// attr2 Y (1..1) +// """); +// String nsB = createModel("rule.rosetta", """ +// namespace demo.c +// +// import demo.a.* +// import demo.b.* +// +// reporting rule R from X: +// x ->> attr2 +// filter +// item = Q +// or item = R +// or item = S +// """); +// +// // There should be no issue. +// assertNoIssues(); +// +// makeChange(nsA, 2, 14, "\"", ""); +// List issues = getDiagnostics().get(nsB); +// +// assertIssues("Error [[4, 8] .. [4, 9]]: Couldn't resolve reference to RosettaFeature 'Q'.\n", issues); +// +// makeChange(nsA, 2, 14, "", "\""); +// +// // There should again be no issue. +// assertNoIssues(); +// } + @Test @Disabled - void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues() { - String nsA = createModel("a.rosetta", """ - namespace demo.emissions.model - - enum Y: <"Text"> - Q - R - S + void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues2() { + String nsA = createModel("enum.rosetta", """ + namespace demo.namespace1 + + enum Enum1: <"Text"> + A + B + C + + enum Enum2: + A + B + C """); - String nsB = createModel("b.rosetta", """ - namespace b + String nsA2 = createModel("type.rosetta", """ + namespace demo.namespace2 - type X: x string (1..1) - reporting rule R from X: - c.Z ->> attr2 - filter - item = Q - or item = R - or item = S + type X: + x string (1..1) """); - String nsC = createModel("c.rosetta", """ - namespace a - - type Z: <"Text"> - attr1 int (1..1) - attr2 Y (1..1) + String nsB = createModel("rule.rosetta", """ + namespace demo.namespace3 + + import demo.namespace1.* + import demo.namespace2.* + + reporting rule AAA from X: + extract Enum2 -> C """); // There should be no issue. assertNoIssues(); - makeChange(nsA, 2, 14, "\"", ""); + makeChange(nsA, 2, 18, "\"", ""); List issues = getDiagnostics().get(nsB); - assertIssues("Error [[4, 8] .. [4, 9]]: Couldn't resolve reference to RosettaFeature 'Q'.\n", issues); + assertIssues("Error [[6, 10] .. [6, 15]]: Couldn't resolve reference to RosettaSymbol 'Enum2'.\n" + + "Error [[6, 19] .. [6, 20]]: Couldn't resolve reference to RosettaFeature 'C'.\n" + + "Warning [[2, 7] .. [2, 24]]: Unused import demo.namespace1.*\n", issues); - makeChange(nsA, 2, 14, "", "\""); + makeChange(nsA, 2, 18, "", "\""); // There should again be no issue. assertNoIssues(); From 8e400cd2bf2f9bfaf5d992c58ea046cec008cc18 Mon Sep 17 00:00:00 2001 From: Maria Cristescu Date: Mon, 11 Aug 2025 15:28:01 +0200 Subject: [PATCH 3/7] Update test --- .../ide/server/ChangeDetectionTest.java | 95 +++++++++---------- 1 file changed, 43 insertions(+), 52 deletions(-) diff --git a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java index 081d92669..7bca36bf5 100644 --- a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java +++ b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java @@ -322,60 +322,9 @@ enum Y: Q assertNoIssues(); } - -// @Test -// @Disabled -// void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues() { -// String nsA = createModel("enum.rosetta", """ -// namespace demo.a -// -// enum Y: <"Text"> -// Q -// R -// S -// """); -// String nsA2 = createModel("type.rosetta", """ -// namespace demo.b -// -// import demo.a.* -// -// type X: x Z (1..1) -// -// type Z: <"Text"> -// attr1 int (1..1) -// attr2 Y (1..1) -// """); -// String nsB = createModel("rule.rosetta", """ -// namespace demo.c -// -// import demo.a.* -// import demo.b.* -// -// reporting rule R from X: -// x ->> attr2 -// filter -// item = Q -// or item = R -// or item = S -// """); -// -// // There should be no issue. -// assertNoIssues(); -// -// makeChange(nsA, 2, 14, "\"", ""); -// List issues = getDiagnostics().get(nsB); -// -// assertIssues("Error [[4, 8] .. [4, 9]]: Couldn't resolve reference to RosettaFeature 'Q'.\n", issues); -// -// makeChange(nsA, 2, 14, "", "\""); -// -// // There should again be no issue. -// assertNoIssues(); -// } - @Test @Disabled - void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues2() { + void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues() { String nsA = createModel("enum.rosetta", """ namespace demo.namespace1 @@ -420,4 +369,46 @@ x string (1..1) // There should again be no issue. assertNoIssues(); } + + @Test + @Disabled + void testCommentingAndFixingReportingRuleHasNoIssues() { + String nsA = createModel("enum.rosetta", """ + namespace demo.namespace1 + + reporting rule FooAttr from int: + to-string + as "My attribute from rule" + + """); + String nsA2 = createModel("type.rosetta", """ + namespace demo.namespace2 + + import demo.namespace1.* + + type Foo: + attr string (1..1) + [ruleReference FooAttr] + + """); + + // There should be no issue. + assertNoIssues(); + + makeChange(nsA, 2, 0, "", "//"); + makeChange(nsA, 3, 0, "", "//"); + makeChange(nsA, 4, 0, "", "//"); + + List issues = getDiagnostics().get(nsA2); + + assertIssues("Error [[6, 17] .. [6, 24]]: Couldn't resolve reference to RosettaRule 'FooAttr'.\n" + + "Warning [[2, 7] .. [2, 24]]: Unused import demo.namespace1.*\n", issues); + + makeChange(nsA2, 6, 0, "", "//"); + + // There should again be no issue. + + // actually- should only have an unused import in this case + assertNoIssues(); + } } From 327f657ac047ad82f1abdde28834a059e59896f0 Mon Sep 17 00:00:00 2001 From: Maria Cristescu Date: Mon, 11 Aug 2025 16:45:20 +0200 Subject: [PATCH 4/7] Update test --- .../rosetta/ide/server/ChangeDetectionTest.java | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java index 7bca36bf5..60404e352 100644 --- a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java +++ b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java @@ -379,7 +379,9 @@ void testCommentingAndFixingReportingRuleHasNoIssues() { reporting rule FooAttr from int: to-string as "My attribute from rule" - + + type Bar: + attr string (1..1) """); String nsA2 = createModel("type.rosetta", """ namespace demo.namespace2 @@ -387,9 +389,9 @@ void testCommentingAndFixingReportingRuleHasNoIssues() { import demo.namespace1.* type Foo: - attr string (1..1) + attr1 string (1..1) [ruleReference FooAttr] - + attr2 Bar (1..1) """); // There should be no issue. @@ -401,14 +403,11 @@ attr string (1..1) List issues = getDiagnostics().get(nsA2); - assertIssues("Error [[6, 17] .. [6, 24]]: Couldn't resolve reference to RosettaRule 'FooAttr'.\n" + - "Warning [[2, 7] .. [2, 24]]: Unused import demo.namespace1.*\n", issues); + assertIssues("Error [[6, 17] .. [6, 24]]: Couldn't resolve reference to RosettaRule 'FooAttr'.\n", issues); makeChange(nsA2, 6, 0, "", "//"); // There should again be no issue. - - // actually- should only have an unused import in this case assertNoIssues(); } } From 9ad967a26b67a4ca95427d8306989442622840e5 Mon Sep 17 00:00:00 2001 From: Maria Cristescu Date: Mon, 11 Aug 2025 16:58:22 +0200 Subject: [PATCH 5/7] Final update to test --- .../ide/server/ChangeDetectionTest.java | 53 +++---------------- 1 file changed, 6 insertions(+), 47 deletions(-) diff --git a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java index 60404e352..97b1b998c 100644 --- a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java +++ b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java @@ -325,7 +325,7 @@ enum Y: Q @Test @Disabled void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues() { - String nsA = createModel("enum.rosetta", """ + String nsEnum = createModel("enum.rosetta", """ namespace demo.namespace1 enum Enum1: <"Text"> @@ -338,13 +338,13 @@ enum Enum2: B C """); - String nsA2 = createModel("type.rosetta", """ + String nsType = createModel("type.rosetta", """ namespace demo.namespace2 type X: x string (1..1) """); - String nsB = createModel("rule.rosetta", """ + String nsRule = createModel("rule.rosetta", """ namespace demo.namespace3 import demo.namespace1.* @@ -357,55 +357,14 @@ x string (1..1) // There should be no issue. assertNoIssues(); - makeChange(nsA, 2, 18, "\"", ""); - List issues = getDiagnostics().get(nsB); + makeChange(nsEnum, 2, 18, "\"", ""); + List issues = getDiagnostics().get(nsRule); assertIssues("Error [[6, 10] .. [6, 15]]: Couldn't resolve reference to RosettaSymbol 'Enum2'.\n" + "Error [[6, 19] .. [6, 20]]: Couldn't resolve reference to RosettaFeature 'C'.\n" + "Warning [[2, 7] .. [2, 24]]: Unused import demo.namespace1.*\n", issues); - makeChange(nsA, 2, 18, "", "\""); - - // There should again be no issue. - assertNoIssues(); - } - - @Test - @Disabled - void testCommentingAndFixingReportingRuleHasNoIssues() { - String nsA = createModel("enum.rosetta", """ - namespace demo.namespace1 - - reporting rule FooAttr from int: - to-string - as "My attribute from rule" - - type Bar: - attr string (1..1) - """); - String nsA2 = createModel("type.rosetta", """ - namespace demo.namespace2 - - import demo.namespace1.* - - type Foo: - attr1 string (1..1) - [ruleReference FooAttr] - attr2 Bar (1..1) - """); - - // There should be no issue. - assertNoIssues(); - - makeChange(nsA, 2, 0, "", "//"); - makeChange(nsA, 3, 0, "", "//"); - makeChange(nsA, 4, 0, "", "//"); - - List issues = getDiagnostics().get(nsA2); - - assertIssues("Error [[6, 17] .. [6, 24]]: Couldn't resolve reference to RosettaRule 'FooAttr'.\n", issues); - - makeChange(nsA2, 6, 0, "", "//"); + makeChange(nsEnum, 2, 18, "", "\""); // There should again be no issue. assertNoIssues(); From c9d66526619921d03009aa60f34461fe9e58aae8 Mon Sep 17 00:00:00 2001 From: Maria Cristescu Date: Mon, 11 Aug 2025 16:59:03 +0200 Subject: [PATCH 6/7] Enable test --- .../com/regnosys/rosetta/ide/server/ChangeDetectionTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java index 97b1b998c..2d59d8294 100644 --- a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java +++ b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java @@ -323,7 +323,6 @@ enum Y: Q } @Test - @Disabled void testDeletingAndFixingTrailingQuoteInEnumHasNoIssues() { String nsEnum = createModel("enum.rosetta", """ namespace demo.namespace1 From dbe68e82490c5070f0b413f52a98a063fa37ff75 Mon Sep 17 00:00:00 2001 From: Maria Cristescu Date: Mon, 11 Aug 2025 17:04:48 +0200 Subject: [PATCH 7/7] Remove unused import --- .../com/regnosys/rosetta/ide/server/ChangeDetectionTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java index 2d59d8294..7e9c402c7 100644 --- a/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java +++ b/rosetta-ide/src/test/java/com/regnosys/rosetta/ide/server/ChangeDetectionTest.java @@ -2,7 +2,6 @@ import org.eclipse.lsp4j.Diagnostic; import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import com.regnosys.rosetta.ide.tests.AbstractRosettaLanguageServerValidationTest;