mohayonao/SCScript

View on GitHub
src/sc/lang/compiler/parser/series-expr_test.js

Summary

Maintainability
F
1 wk
Test Coverage
describe("sc.lang.compiler.Parser", function() {
  "use strict";

  var Syntax = sc.lang.compiler.Syntax;
  var Token = sc.lang.compiler.Token;
  var Message = sc.lang.compiler.Message;
  var strlib = sc.libs.strlib;

  describe("parseSeriesExpression", function() {
    sc.test.compile(this.title).each({
      "(..10)": sc.test.OK,
      "(1..10)": sc.test.OK,
      "(1,5..10)": sc.test.OK,
      "(..)": strlib.format(Message.UnexpectedToken, ")"),
      "(,5..)": strlib.format(Message.UnexpectedToken, ","),
      "(,5..10)": strlib.format(Message.UnexpectedToken, ","),
      "(1..)": strlib.format(Message.UnexpectedToken, ")"),
      "(1,5..)": strlib.format(Message.UnexpectedToken, ")"),
      "(1,..10)": strlib.format(Message.UnexpectedToken, ".."),
      "(:..)": sc.test.OK,
      "(:..10)": sc.test.OK,
      "(:1..)": sc.test.OK,
      "(:1..10)": sc.test.OK,
      "(:1,5..)": sc.test.OK,
      "(:1,5..10)": sc.test.OK,
      "(:,5..10)": strlib.format(Message.UnexpectedToken, ","),
      "[1..10]": strlib.format(Message.UnexpectedToken, "["),
      "(1..10]": strlib.format(Message.UnexpectedToken, "]"),
    });

    sc.test.parse(this.title).each({
      "(..10)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "0",
          valueType: Token.IntegerLiteral,
          range: [ 1, 1 ],
          loc: {
            start: { line: 1, column: 1 },
            end: { line: 1, column: 1 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "series",
        },
        args: {
          list: [
            null,
            {
              type: Syntax.Literal,
              value: "10",
              valueType: Token.IntegerLiteral,
              range: [ 3, 5 ],
              loc: {
                start: { line: 1, column: 3 },
                end: { line: 1, column: 5 }
              }
            }
          ]
        },
        range: [ 0, 6 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 6 }
        }
      },
      "(1..10)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "1",
          valueType: Token.IntegerLiteral,
          range: [ 1, 2 ],
          loc: {
            start: { line: 1, column: 1 },
            end: { line: 1, column: 2 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "series",
        },
        args: {
          list: [
            null,
            {
              type: Syntax.Literal,
              value: "10",
              valueType: Token.IntegerLiteral,
              range: [ 4, 6 ],
              loc: {
                start: { line: 1, column: 4 },
                end: { line: 1, column: 6 }
              }
            }
          ]
        },
        range: [ 0, 7 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 7 }
        }
      },
      "(1,5..10)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "1",
          valueType: Token.IntegerLiteral,
          range: [ 1, 2 ],
          loc: {
            start: { line: 1, column: 1 },
            end: { line: 1, column: 2 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "series",
        },
        args: {
          list: [
            {
              type: Syntax.Literal,
              value: "5",
              valueType: Token.IntegerLiteral,
              range: [ 3, 4 ],
              loc: {
                start: { line: 1, column: 3 },
                end: { line: 1, column: 4 }
              }
            },
            {
              type: Syntax.Literal,
              value: "10",
              valueType: Token.IntegerLiteral,
              range: [ 6, 8 ],
              loc: {
                start: { line: 1, column: 6 },
                end: { line: 1, column: 8 }
              }
            }
          ]
        },
        range: [ 0, 9 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 9 }
        }
      },
      "(:..)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "0",
          valueType: Token.IntegerLiteral,
          range: [ 2, 2 ],
          loc: {
            start: { line: 1, column: 2 },
            end: { line: 1, column: 2 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "seriesIter",
        },
        args: {
          list: [
            null,
            null
          ]
        },
        range: [ 0, 5 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 5 }
        }
      },
      "(:..10)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "0",
          valueType: Token.IntegerLiteral,
          range: [ 2, 2 ],
          loc: {
            start: { line: 1, column: 2 },
            end: { line: 1, column: 2 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "seriesIter",
        },
        args: {
          list: [
            null,
            {
              type: Syntax.Literal,
              value: "10",
              valueType: Token.IntegerLiteral,
              range: [ 4, 6 ],
              loc: {
                start: { line: 1, column: 4 },
                end: { line: 1, column: 6 }
              }
            }
          ]
        },
        range: [ 0, 7 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 7 }
        }
      },
      "(:1..)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "1",
          valueType: Token.IntegerLiteral,
          range: [ 2, 3 ],
          loc: {
            start: { line: 1, column: 2 },
            end: { line: 1, column: 3 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "seriesIter",
        },
        args: {
          list: [
            null,
            null
          ]
        },
        range: [ 0, 6 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 6 }
        }
      },
      "(:1..10)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "1",
          valueType: Token.IntegerLiteral,
          range: [ 2, 3 ],
          loc: {
            start: { line: 1, column: 2 },
            end: { line: 1, column: 3 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "seriesIter",
        },
        args: {
          list: [
            null,
            {
              type: Syntax.Literal,
              value: "10",
              valueType: Token.IntegerLiteral,
              range: [ 5, 7 ],
              loc: {
                start: { line: 1, column: 5 },
                end: { line: 1, column: 7 }
              }
            }
          ]
        },
        range: [ 0, 8 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 8 }
        }
      },
      "(:1,5..)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "1",
          valueType: Token.IntegerLiteral,
          range: [ 2, 3 ],
          loc: {
            start: { line: 1, column: 2 },
            end: { line: 1, column: 3 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "seriesIter",
        },
        args: {
          list: [
            {
              type: Syntax.Literal,
              value: "5",
              valueType: Token.IntegerLiteral,
              range: [ 4, 5 ],
              loc: {
                start: { line: 1, column: 4 },
                end: { line: 1, column: 5 }
              }
            },
            null
          ]
        },
        range: [ 0, 8 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 8 }
        }
      },
      "(:1,5..10)": {
        type: Syntax.CallExpression,
        stamp: "(",
        callee: {
          type: Syntax.Literal,
          value: "1",
          valueType: Token.IntegerLiteral,
          range: [ 2, 3 ],
          loc: {
            start: { line: 1, column: 2 },
            end: { line: 1, column: 3 }
          }
        },
        method: {
          type: Syntax.Identifier,
          name: "seriesIter",
        },
        args: {
          list: [
            {
              type: Syntax.Literal,
              value: "5",
              valueType: Token.IntegerLiteral,
              range: [ 4, 5 ],
              loc: {
                start: { line: 1, column: 4 },
                end: { line: 1, column: 5 }
              }
            },
            {
              type: Syntax.Literal,
              value: "10",
              valueType: Token.IntegerLiteral,
              range: [ 7, 9 ],
              loc: {
                start: { line: 1, column: 7 },
                end: { line: 1, column: 9 }
              }
            },
          ]
        },
        range: [ 0, 10 ],
        loc: {
          start: { line: 1, column: 0 },
          end: { line: 1, column: 10 }
        }
      },
    });
  });
});