Exemple #1
0
        public void CanGivenSpec()
        {
            ArgSpec boolSpec = GetBoolSpec("l", false);
            Args    args     = new Args(new ArgSpec[] { boolSpec });

            Assert.NotNull(args);
        }
Exemple #2
0
        public void GivenStringSpecAndArgWithoutValue_WhenParse_ThenThrowArgumentException()
        {
            ArgSpec stringSpec = GetStringSpec("d", "/var/log");
            Args    args       = new Args(new ArgSpec[] { stringSpec });

            Assert.Throws <ArgumentException>(() => args.Parse("-d"));
        }
Exemple #3
0
 // TODO: convert to static method; caller parameter doesn't belong here
 /// <exception cref="InterpreterError"><paramref name="argspec"/> is invalid.</exception>
 public ZilFunction([NotNull] string caller, [CanBeNull] ZilAtom name, [CanBeNull] ZilAtom activationAtom,
                    [NotNull][ItemNotNull] IEnumerable <ZilObject> argspec, ZilDecl decl,
                    [ItemNotNull][NotNull] IEnumerable <ZilObject> body)
 {
     this.argspec = ArgSpec.Parse(caller, name, activationAtom, argspec, decl);
     this.body    = body.ToArray();
 }
Exemple #4
0
 public ZilRoutine([CanBeNull] ZilAtom name, [CanBeNull] ZilAtom activationAtom,
                   [NotNull] IEnumerable <ZilObject> argspec, [ItemNotNull][NotNull] IEnumerable <ZilObject> body, RoutineFlags flags)
 {
     Name      = name;
     ArgSpec   = ArgSpec.Parse("ROUTINE", name, activationAtom, argspec);
     this.body = body.ToArray();
     Flags     = flags;
 }
Exemple #5
0
        public void GivenStringSpecWithoutArgs_WhenParse_ThenReturnFlagAndDefaultValue()
        {
            ArgSpec stringSpec = GetStringSpec("d", "/var/log");
            Args    args       = new Args(new ArgSpec[] { stringSpec });
            IDictionary <string, object> results = args.Parse("");

            AssertString(results, stringSpec.Flag, "/var/log");
        }
Exemple #6
0
        public void GivneBoolSpecWithoutArgs_WhenParse_ThenReturnFlagAndFlase()
        {
            ArgSpec boolSpec = GetBoolSpec("l", false);
            Args    args     = new Args(new ArgSpec[] { boolSpec });
            IDictionary <string, object> results = args.Parse("");

            AssertBool(results, boolSpec.Flag, false);
        }
Exemple #7
0
        public void GivenBoolSpecAndArgs_WhenParse_ThenReturnFlagAndTrue()
        {
            ArgSpec boolSpec = GetBoolSpec("l", false);
            Args    args     = new Args(new ArgSpec[] { boolSpec });
            IDictionary <string, object> results = args.Parse("-l");

            AssertBool(results, boolSpec.Flag, true);
        }
Exemple #8
0
        public void GivenIntSpecAndArgs_WhenParse_ThenReturnFlagAndIntValue()
        {
            ArgSpec intSpec = GetIntSpec("p", 8080);
            Args    args    = new Args(new ArgSpec[] { intSpec });
            IDictionary <string, object> results = args.Parse("-p 1234");

            AssertInt(results, intSpec.Flag, 1234);
        }
Exemple #9
0
        public void BIND_Is_Included_In_ZilListBody()
        {
            var ctx = new Context();

            var args = Program.Parse(ctx, @"""BIND"" B X ""NAME"" N").ToArray();

            var spec = ArgSpec.Parse("test", ZilAtom.Parse("FOO", ctx), null, args);

            TestHelpers.AssertStructurallyEqual(args, spec.AsZilListBody().ToArray());
        }
Exemple #10
0
        public void GivenMultiSpecAndArgs_WhenParse_ThenReturnFlagAndValue()
        {
            ArgSpec intSpec    = GetIntSpec("p", 8080);
            ArgSpec boolSpec   = GetBoolSpec("l", false);
            ArgSpec stringSpec = GetStringSpec("d", "/var/log");
            Args    args       = new Args(new ArgSpec[] { stringSpec, boolSpec, intSpec });
            IDictionary <string, object> results = args.Parse("-l -d /home/user/log -p 1234");

            AssertInt(results, intSpec.Flag, 1234);
            AssertString(results, stringSpec.Flag, "/home/user/log");
            AssertBool(results, boolSpec.Flag, true);
        }
Exemple #11
0
        public void TUPLE_Is_Included_In_ZilListBody()
        {
            var ctx = new Context();

            var spec = ArgSpec.Parse("test", ZilAtom.Parse("FOO", ctx), null, new ZilObject[] { ZilString.FromString("TUPLE"), ZilAtom.Parse("A", ctx) });

            TestHelpers.AssertStructurallyEqual(
                new ZilObject[]
            {
                ZilString.FromString("TUPLE"),
                ZilAtom.Parse("A", ctx)
            },
                spec.AsZilListBody().ToArray());
        }
Exemple #12
0
        public void ActivationAtom_Becomes_NAME_Argument_In_ZilListBody()
        {
            var ctx = new Context();

            var spec = ArgSpec.Parse("test", ZilAtom.Parse("FOO", ctx), ZilAtom.Parse("ACT", ctx), new ZilObject[0]);

            TestHelpers.AssertStructurallyEqual(
                new ZilObject[]
            {
                ZilString.FromString("NAME"),
                ZilAtom.Parse("ACT", ctx)
            },
                spec.AsZilListBody().ToArray());
        }
Exemple #13
0
        public void ARGS_And_TUPLE_Can_Be_ADECLs()
        {
            var ctx = new Context();

            ArgSpec.Parse("test", ZilAtom.Parse("FOO", ctx), null, new ZilObject[]
            {
                ZilString.FromString("ARGS"),
                new ZilAdecl(
                    ZilAtom.Parse("A", ctx),
                    ctx.GetStdAtom(StdAtom.LIST))
            });

            ArgSpec.Parse("test", ZilAtom.Parse("FOO", ctx), null, new ZilObject[]
            {
                ZilString.FromString("TUPLE"),
                new ZilAdecl(
                    ZilAtom.Parse("A", ctx),
                    ctx.GetStdAtom(StdAtom.LIST))
            });
        }
Exemple #14
0
        public void AsZilListBody_Returns_ADECLs_For_Arguments_With_DECLs()
        {
            var ctx = new Context();

            var spec = ArgSpec.Parse("test", ZilAtom.Parse("FOO", ctx), null, new ZilObject[]
            {
                new ZilAdecl(
                    ZilAtom.Parse("A1", ctx),
                    ctx.GetStdAtom(StdAtom.FIX)),
                new ZilAdecl(
                    new ZilForm(new ZilObject[] {
                    ctx.GetStdAtom(StdAtom.QUOTE),
                    ZilAtom.Parse("A2", ctx)
                }),
                    ctx.GetStdAtom(StdAtom.FORM)),
                ZilString.FromString("TUPLE"),
                new ZilAdecl(
                    ZilAtom.Parse("A3", ctx),
                    ctx.GetStdAtom(StdAtom.LIST))
            });

            TestHelpers.AssertStructurallyEqual(
                new ZilObject[] {
                new ZilAdecl(
                    ZilAtom.Parse("A1", ctx),
                    ctx.GetStdAtom(StdAtom.FIX)),
                new ZilAdecl(
                    new ZilForm(new ZilObject[] {
                    ctx.GetStdAtom(StdAtom.QUOTE),
                    ZilAtom.Parse("A2", ctx)
                }),
                    ctx.GetStdAtom(StdAtom.FORM)),
                ZilString.FromString("TUPLE"),
                new ZilAdecl(
                    ZilAtom.Parse("A3", ctx),
                    ctx.GetStdAtom(StdAtom.LIST))
            },
                spec.AsZilListBody().ToArray());
        }
Exemple #15
0
        public void VALUE_Is_Included_In_ZilListBody()
        {
            var ctx = new Context();

            var spec = ArgSpec.Parse("test", ZilAtom.Parse("FOO", ctx), null, new ZilObject[]
            {
                ZilString.FromString("AUX"),
                ZilAtom.Parse("X", ctx),
                ZilString.FromString("NAME"),
                ZilAtom.Parse("N", ctx),
                ZilString.FromString("VALUE"),
                new ZilForm(new ZilObject[]
                {
                    ctx.GetStdAtom(StdAtom.OR),
                    ctx.GetStdAtom(StdAtom.FIX),
                    ctx.GetStdAtom(StdAtom.FALSE)
                })
            });

            TestHelpers.AssertStructurallyEqual(
                new ZilObject[]
            {
                ZilString.FromString("AUX"),
                ZilAtom.Parse("X", ctx),
                ZilString.FromString("NAME"),
                ZilAtom.Parse("N", ctx),
                ZilString.FromString("VALUE"),
                new ZilForm(new ZilObject[]
                {
                    ctx.GetStdAtom(StdAtom.OR),
                    ctx.GetStdAtom(StdAtom.FIX),
                    ctx.GetStdAtom(StdAtom.FALSE)
                })
            },
                spec.AsZilListBody().ToArray());
        }