From dca539b841ee12d319ba401cd884493b52ff8734 Mon Sep 17 00:00:00 2001 From: wener Date: Tue, 12 Sep 2023 11:30:34 +0200 Subject: [PATCH] Added unittest for decorators. --- .../cpd/EcmascriptTokenizerTest.java | 5 ++++ .../cpd/TypeScriptTokenizerTest.java | 18 ------------- .../lang/ecmascript/cpd/testdata/decorator.js | 8 ++++++ .../ecmascript/cpd/testdata/decorator.txt | 25 +++++++++++++++++++ .../lang/typescript/cpd/testdata/decorator.ts | 24 ------------------ 5 files changed, 38 insertions(+), 42 deletions(-) create mode 100644 pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/ecmascript/cpd/testdata/decorator.js create mode 100644 pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/ecmascript/cpd/testdata/decorator.txt delete mode 100644 pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/typescript/cpd/testdata/decorator.ts diff --git a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/cpd/EcmascriptTokenizerTest.java b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/cpd/EcmascriptTokenizerTest.java index 9e0163405d..d227db8bbd 100644 --- a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/cpd/EcmascriptTokenizerTest.java +++ b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/ecmascript/cpd/EcmascriptTokenizerTest.java @@ -9,6 +9,8 @@ import org.junit.jupiter.api.Test; import net.sourceforge.pmd.cpd.test.CpdTextComparisonTest; import net.sourceforge.pmd.lang.ecmascript.EcmascriptLanguageModule; + + class EcmascriptTokenizerTest extends CpdTextComparisonTest { EcmascriptTokenizerTest() { @@ -57,4 +59,7 @@ class EcmascriptTokenizerTest extends CpdTextComparisonTest { void testTabWidth() { doTest("tabWidth"); } + + @Test + void testDecorators() { doTest("decorator"); } } diff --git a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/typescript/cpd/TypeScriptTokenizerTest.java b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/typescript/cpd/TypeScriptTokenizerTest.java index c892618f99..27ada122a6 100644 --- a/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/typescript/cpd/TypeScriptTokenizerTest.java +++ b/pmd-javascript/src/test/java/net/sourceforge/pmd/lang/typescript/cpd/TypeScriptTokenizerTest.java @@ -7,7 +7,6 @@ package net.sourceforge.pmd.lang.typescript.cpd; import org.junit.jupiter.api.Test; import net.sourceforge.pmd.cpd.test.CpdTextComparisonTest; -import net.sourceforge.pmd.lang.ecmascript.cpd.EcmascriptTokenizer; import net.sourceforge.pmd.lang.typescript.TsLanguageModule; class TypeScriptTokenizerTest extends CpdTextComparisonTest { @@ -25,21 +24,4 @@ class TypeScriptTokenizerTest extends CpdTextComparisonTest { void apiSampleWatchTest() { doTest("APISample_Watch"); } - - @Test - void testDecorators() throws IOException { - Tokenizer t = new EcmascriptTokenizer(); - SourceCode sourceCode = new SourceCode(new SourceCode.StringCodeLoader("// A simple decorator" + PMD.EOL - + "@annotation" + PMD.EOL - + "class MyClass { }" + PMD.EOL - + "" + PMD.EOL - + "function annotation(target) {" + PMD.EOL - + " // Add a property on target" + PMD.EOL - + " target.annotated = true;" + PMD.EOL - + "}" + PMD.EOL - )); - final Tokens tokens = new Tokens(); - t.tokenize(sourceCode, tokens); - assertEquals("@annotation", tokens.getTokens().get(0).toString()); - } } diff --git a/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/ecmascript/cpd/testdata/decorator.js b/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/ecmascript/cpd/testdata/decorator.js new file mode 100644 index 0000000000..53de860398 --- /dev/null +++ b/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/ecmascript/cpd/testdata/decorator.js @@ -0,0 +1,8 @@ +// A simple decorator\n" +@annotation +class MyClass { } + +function annotation(target) { + // Add a property on target + target.annotated = true; +} \ No newline at end of file diff --git a/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/ecmascript/cpd/testdata/decorator.txt b/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/ecmascript/cpd/testdata/decorator.txt new file mode 100644 index 0000000000..9386b76f05 --- /dev/null +++ b/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/ecmascript/cpd/testdata/decorator.txt @@ -0,0 +1,25 @@ + [Image] or [Truncated image[ Bcol Ecol +L2 + [@annotation] 1 12 +L3 + [class] 1 6 + [MyClass] 7 14 + [{] 15 16 + [}] 17 18 +L5 + [function] 1 9 + [annotation] 10 20 + [(] 20 21 + [target] 21 27 + [)] 27 28 + [{] 29 30 +L7 + [target] 4 10 + [.] 10 11 + [annotated] 11 20 + [=] 21 22 + [true] 23 27 + [;] 27 28 +L8 + [}] 1 2 +EOF diff --git a/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/typescript/cpd/testdata/decorator.ts b/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/typescript/cpd/testdata/decorator.ts deleted file mode 100644 index 09129bac2d..0000000000 --- a/pmd-javascript/src/test/resources/net/sourceforge/pmd/lang/typescript/cpd/testdata/decorator.ts +++ /dev/null @@ -1,24 +0,0 @@ -class Point { - private _x: number; - private _y: number; - constructor(x: number, y: number) { - this._x = x; - this._y = y; - } - - @configurable(false) - get x() { - return this._x; - } - - @configurable(false) - get y() { - return this._y; - } -} - -function configurable(value: boolean) { - return function (target: any, propertyKey: string, descriptor: PropertyDescriptor) { - descriptor.configurable = value; - }; -}