Index: lib/src/prism/tests/testrunner-tests.js |
diff --git a/lib/src/prism/tests/testrunner-tests.js b/lib/src/prism/tests/testrunner-tests.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..24ad32cd8af609a49d58db4a4ef8f62adbfa3fe5 |
--- /dev/null |
+++ b/lib/src/prism/tests/testrunner-tests.js |
@@ -0,0 +1,166 @@ |
+"use strict"; |
+ |
+var assert = require("chai").assert; |
+var TokenStreamTransformer = require("./helper/token-stream-transformer"); |
+var TestCase = require("./helper/test-case"); |
+ |
+ |
+//region Token Stream Transformer |
+describe("The token stream transformer", |
+ function () { |
+ it("should handle all kinds of simple transformations", |
+ function () { |
+ var tokens = [ |
+ {type: "type", content: "content"}, |
+ "string" |
+ ]; |
+ |
+ var expected = [ |
+ ["type", "content"], |
+ "string" |
+ ]; |
+ |
+ assert.deepEqual(TokenStreamTransformer.simplify(tokens), expected); |
+ } |
+ ); |
+ |
+ |
+ it("should handle nested structures", |
+ function () { |
+ var tokens = [ |
+ { |
+ type: "type", |
+ content: [ |
+ { |
+ type: "insideType", content: |
+ [ |
+ {type: "insideInsideType", content: "content"} |
+ ] |
+ } |
+ ] |
+ } |
+ ]; |
+ |
+ var expected = [ |
+ ["type", [ |
+ ["insideType", [ |
+ ["insideInsideType", "content"] |
+ ]] |
+ ]] |
+ ]; |
+ |
+ assert.deepEqual(TokenStreamTransformer.simplify(tokens), expected); |
+ } |
+ ); |
+ |
+ |
+ it("should strip empty tokens", |
+ function () { |
+ var tokenStream = [ |
+ "", |
+ "\r\n", |
+ "\t", |
+ " " |
+ ]; |
+ |
+ var expectedSimplified = []; |
+ |
+ assert.deepEqual(TokenStreamTransformer.simplify(tokenStream), expectedSimplified); |
+ } |
+ ); |
+ |
+ |
+ it("should strip empty token tree branches", |
+ function () { |
+ var tokenStream = [ |
+ { |
+ type: "type", |
+ content: [ |
+ ["", ""], |
+ "", |
+ {type: "nested", content: [""]} |
+ ] |
+ }, |
+ [[[[[[[""]]]]]]] |
+ ]; |
+ |
+ var expectedSimplified = [ |
+ ["type", [ |
+ ["nested", []] |
+ ]] |
+ ]; |
+ |
+ assert.deepEqual(TokenStreamTransformer.simplify(tokenStream), expectedSimplified); |
+ } |
+ ); |
+ |
+ |
+ it("should ignore all properties in tokens except value and content", |
+ function () { |
+ |
+ var tokenStream = [ |
+ {type: "type", content: "content", alias: "alias"} |
+ ]; |
+ |
+ var expectedSimplified = [ |
+ ["type", "content"] |
+ ]; |
+ |
+ assert.deepEqual(TokenStreamTransformer.simplify(tokenStream), expectedSimplified); |
+ } |
+ ); |
+ } |
+); |
+//endregion |
+ |
+ |
+//region Language name parsing |
+describe("The language name parsing", |
+ function () { |
+ it("should use the last language as the main language if no language is specified", |
+ function () { |
+ assert.deepEqual( |
+ TestCase.parseLanguageNames("a"), |
+ { |
+ languages: ["a"], |
+ mainLanguage: "a" |
+ } |
+ ); |
+ |
+ assert.deepEqual( |
+ TestCase.parseLanguageNames("a+b+c"), |
+ { |
+ languages: ["a", "b", "c"], |
+ mainLanguage: "c" |
+ } |
+ ); |
+ } |
+ ); |
+ |
+ |
+ it("should use the specified language as main language", |
+ function () { |
+ assert.deepEqual( |
+ TestCase.parseLanguageNames("a+b!+c"), |
+ { |
+ languages: ["a", "b", "c"], |
+ mainLanguage: "b" |
+ } |
+ ); |
+ } |
+ ); |
+ |
+ |
+ it("should throw an error if there are multiple main languages", |
+ function () { |
+ assert.throw( |
+ function () { |
+ TestCase.parseLanguageNames("a+b!+c!"); |
+ }, |
+ "There are multiple main languages defined." |
+ ); |
+ } |
+ ); |
+ } |
+); |
+//endregion |