public SystemFunctionsTests()
        {
            var scope = new ServiceContainer();

            scope.AddMethodRegistry <SystemFunctionProvider>();

            var groups = new Dictionary <ObjectName, IList <SqlObject> >();

            groups[new ObjectName("a")] = new List <SqlObject> {
                SqlObject.Integer(2),
                SqlObject.Integer(45)
            };

            var groupResolver = new Mock <IGroupResolver>();

            groupResolver.SetupGet(x => x.GroupId)
            .Returns(0);
            groupResolver.SetupGet(x => x.Size)
            .Returns(groups[new ObjectName("a")].Count);
            groupResolver.Setup(x => x.ResolveReferenceAsync(It.IsAny <ObjectName>(), It.IsAny <long>()))
            .Returns <ObjectName, long>((name, index) => {
                IList <SqlObject> group;
                groups.TryGetValue(name, out group);
                return(Task.FromResult(group[(int)index]));
            });

            var refResolver = new Mock <IReferenceResolver>();

            refResolver.Setup(x => x.ResolveType(It.IsAny <ObjectName>()))
            .Returns(PrimitiveTypes.Integer());

            groupResolver.Setup(x => x.GetResolver(It.IsAny <long>()))
            .Returns(refResolver.Object);

            scope.RegisterInstance <IGroupResolver>(groupResolver.Object);
            scope.RegisterInstance <IReferenceResolver>(refResolver.Object);

            var mock = new Mock <IContext>();

            mock.SetupGet(x => x.Scope)
            .Returns(scope);
            mock.SetupGet(x => x.ContextName)
            .Returns("test");

            context = mock.Object;
        }