public void CanGivenSpec() { ArgSpec boolSpec = GetBoolSpec("l", false); Args args = new Args(new ArgSpec[] { boolSpec }); Assert.NotNull(args); }
public void GivenStringSpecAndArgWithoutValue_WhenParse_ThenThrowArgumentException() { ArgSpec stringSpec = GetStringSpec("d", "/var/log"); Args args = new Args(new ArgSpec[] { stringSpec }); Assert.Throws <ArgumentException>(() => args.Parse("-d")); }
// 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(); }
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; }
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"); }
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); }
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); }
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); }
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()); }
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); }
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()); }
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()); }
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)) }); }
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()); }
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()); }