public void SplitByToken_WhenInvalidType_ExpectThrows() { // Arrange var splitter = new TypeSplitter(); // Act var stopwatch = Stopwatch.StartNew(); Assert.Throws <InvalidTypeException>(() => splitter.SplitByToken("key:value as testEntity")); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); }
/// <summary> /// Initializes this instance. /// </summary> /// <typeparam name="TEntity">The type of the entity.</typeparam> /// <param name="parserOptions">The parser options.</param> /// <returns>The IEntityParser.</returns> private static object Initialize <TEntity>(ParserOptions parserOptions) { var tokenSplitter = new TokenSplitter(); var rangeParser = new RangeParser(); var equalsParser = new EqualsParser(); var entityParser = new EntityParser <TEntity>(); var typeSplitter = new TypeSplitter(); var whereStatementParser = new WhereStatementParser <TEntity>(rangeParser, equalsParser, entityParser, typeSplitter); var whereParser = new WhereParser(whereStatementParser, parserOptions); var orderByParser = new OrderByParser <TEntity>(entityParser); var pageParser = new PageParser(); var selectParser = new SelectParser <TEntity>(entityParser); return(new StatementParser(tokenSplitter, whereParser, pageParser, orderByParser, selectParser)); }
public void ParseWhere_WhenTwoParts_ExpectBinaryNode() { // Arrange var rangeParser = new RangeParser(); var equalsParser = new EqualsParser(); var entityParser = new EntityParser <CustomEntity>(); var typeSplitter = new TypeSplitter(); var whereStatementParser = new WhereStatementParser <CustomEntity>(rangeParser, equalsParser, entityParser, typeSplitter); var whereParser = new WhereParser(whereStatementParser, new ParserOptions()); // Act var stopwatch = Stopwatch.StartNew(); var whereNode = whereParser.ParseWhere("testKey:testValue and testKey2:[23,2]"); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); var next1 = new WhereNode { Conjunctive = Conjunctives.None, Next = null, Statement = new WhereStatement { As = null, Value = new RangeOperator { Statement = "testKey2:[23,2]", Name = "testKey2", Lower = 23, LowerInclusive = false, Upper = 2, UpperInclusive = false } } }; var expected = new WhereNode { Conjunctive = Conjunctives.And, Next = next1, Statement = new WhereStatement { As = null, Value = new EqualsOperator { Statement = "testKey:testValue", Name = "testKey", CaseInsensitive = false, Value = "testValue", IsNot = false } } }; whereNode.ShouldDeepEqual(expected); }
public void SplitByToken_WhenDoesNotIncludeType_ExpectJustData() { // Arrange var splitter = new TypeSplitter(); // Act var stopwatch = Stopwatch.StartNew(); var split = splitter.SplitByToken("key:value"); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); Assert.That(split, Is.Not.Null); Assert.That(split.Data, Is.EqualTo("key:value")); Assert.That(split.HasType, Is.False); Assert.That(split.Type, Is.Null); }
public void SplitByToken_WhenAsInQuotedValueWithType_ExpectSplitWithType() { // Arrange var splitter = new TypeSplitter(); // Act var stopwatch = Stopwatch.StartNew(); var split = splitter.SplitByToken("key:\"value as data\" as string"); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); Assert.That(split, Is.Not.Null); Assert.That(split.Data, Is.EqualTo("key:\"value as data\"")); Assert.That(split.HasType, Is.True); Assert.That(split.Type, Is.EqualTo("string")); }
public void ParseWhere_WhenSimpleQuery_ExpectNodeBack() { // Arrange var rangeParser = new RangeParser(); var equalsParser = new EqualsParser(); var entityParser = new EntityParser <CustomEntity>(); var typeSplitter = new TypeSplitter(); var whereStatementParser = new WhereStatementParser <CustomEntity>(rangeParser, equalsParser, entityParser, typeSplitter); var whereParser = new WhereParser(whereStatementParser, new ParserOptions()); // Act var stopwatch = Stopwatch.StartNew(); var whereNode = whereParser.ParseWhere("testKey:testValue"); stopwatch.Stop(); // Assert this.WriteTimeElapsed(stopwatch); var equalsOperator = whereNode; Assert.That(equalsOperator, Is.Not.Null); var expected = new WhereNode { Conjunctive = Conjunctives.None, Next = null, Statement = new WhereStatement { As = null, Value = new EqualsOperator { Statement = "testKey:testValue", Name = "testKey", CaseInsensitive = false, Value = "testValue", IsNot = false } } }; whereNode.ShouldDeepEqual(expected); }