public void Eval_ReturnUnreducedExpression_WhenItIsQuoted() { var cell = new ClCell(new ClInt(1), new ClInt(2)); var expr = BuiltIn.Quote(cell); var ctx = expr.Reduce(_ctx); Assert.That(Object.ReferenceEquals(ctx.Value, cell), Is.True); }
public void Eval_ReturnUnreducedList_WhenItemOfListHasComplicatedForm() { var begin = BuiltIn.ListOf(ClSymbol.Begin, ClBool.True, Value.Foo, Value.Bar); var logicAnd = BuiltIn.ListOf(ClSymbol.And, ClBool.True, Value.One); var expr = BuiltIn.Quote(BuiltIn.ListOf(begin, logicAnd)); var ctx = expr.Reduce(_ctx); Assert.That(BuiltIn.First(ctx.Value), Is.EqualTo(begin)); Assert.That(BuiltIn.Second(ctx.Value), Is.EqualTo(logicAnd)); }
static IEnumerable <ClObj> TruthyTestCases() { yield return(new ClInt(0)); yield return(new ClDouble(0.0)); yield return(new ClString(string.Empty)); yield return(ClBool.True); yield return(new ClChar('\0')); yield return(BuiltIn.Quote(BuiltIn.ListOf(ClBool.False))); // (quote . (false . nil)) yield return(BuiltIn.Quote(BuiltIn.ListOf(ClCell.Nil))); // (quote . (nil . nil)) }