Пример #1
0
        public void Translate_FromDateTimeConstant_RendersCorrectly()
        {
            // Arrange

            var serializer = new DefaultSerializer();

            var visitor = new Mock <N1QlExpressionTreeVisitor>(new N1QlQueryGenerationContext()
            {
                Serializer         = serializer,
                MemberNameResolver = new ExtendedTypeSerializerMemberNameResolver(serializer)
            })
            {
                CallBase = true
            };

            var method = typeof(UnixMillisecondsDateTime).GetTypeInfo().GetMethod("FromDateTime", new[] { typeof(DateTime) });

            Assert.NotNull(method);

            var expression = Expression.Call(method,
                                             Expression.Constant(ExampleDateTime));

            var translator = new UnixMillisecondsMethodCallTranslator();

            // Act

            translator.Translate(expression, visitor.Object);
            var result = visitor.Object.GetN1QlExpression();

            // Assert

            Assert.AreEqual($"STR_TO_MILLIS(\"{ExampleDateTimeString}\")", result);
        }
Пример #2
0
        public void Translate_FromDateTimeIso_RendersCorrectly()
        {
            // Arrange

            var serializer         = new DefaultSerializer();
            var extentNameProvider = new N1QlExtentNameProvider();

            var visitor = new Mock <N1QlExpressionTreeVisitor>(new N1QlQueryGenerationContext
            {
                Serializer         = serializer,
                MemberNameResolver = new ExtendedTypeSerializerMemberNameResolver(serializer),
                ExtentNameProvider = extentNameProvider
            })
            {
                CallBase = true
            };

            var method = typeof(UnixMillisecondsDateTime).GetTypeInfo().GetMethod("FromDateTime", new[] { typeof(DateTime) });

            Assert.NotNull(method);

            var property = typeof(Iso).GetTypeInfo().GetProperty("Value");

            Assert.NotNull(property);

            var querySource = new Mock <IQuerySource>();

            querySource.SetupGet(m => m.ItemName).Returns("p");
            querySource.SetupGet(m => m.ItemType).Returns(typeof(Iso));

            var querySourceReference = new QuerySourceReferenceExpression(querySource.Object);

            var expression = Expression.Call(method,
                                             Expression.MakeMemberAccess(
                                                 querySourceReference,
                                                 property));

            var translator = new UnixMillisecondsMethodCallTranslator();

            // Act

            translator.Translate(expression, visitor.Object);
            var result = visitor.Object.GetN1QlExpression();

            // Assert

            var extentName = extentNameProvider.GetExtentName(querySource.Object);

            Assert.AreEqual($"STR_TO_MILLIS({extentName}.`value`)", result);
        }
Пример #3
0
        public void Translate_NoMethod_ThrowsArgumentNullException()
        {
            // Arrange

            var visitor = new Mock <N1QlExpressionTreeVisitor>(new N1QlQueryGenerationContext())
            {
                CallBase = true
            };

            var translator = new UnixMillisecondsMethodCallTranslator();

            // Act/Assert

            var result = Assert.Throws <ArgumentNullException>(() => translator.Translate(null, visitor.Object));

            Assert.AreEqual("methodCallExpression", result.ParamName);
        }
Пример #4
0
        public void Translate_NoVisitor_ThrowsArgumentNullException()
        {
            // Arrange

            var method = typeof(UnixMillisecondsDateTime).GetTypeInfo().GetMethod("FromDateTime", new [] { typeof(DateTime) });

            Assert.NotNull(method);

            var expression = Expression.Call(method,
                                             Expression.Constant(ExampleDateTime));

            var translator = new UnixMillisecondsMethodCallTranslator();

            // Act/Assert

            var result = Assert.Throws <ArgumentNullException>(() => translator.Translate(expression, null));

            Assert.AreEqual("expressionTreeVisitor", result.ParamName);
        }