Skip to content

Commit 1463fb8

Browse files
author
Rick Button
committed
Expanded eqv/eq/equal tests for vector support
1 parent 1bb90ba commit 1463fb8

6 files changed

Lines changed: 21 additions & 1 deletion

File tree

src/Scheme.NET.Tests/ProcedureTests/EqTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,10 @@ public void TestLocs()
7070
{
7171
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("a"), Eval("(1 . 2)"));
7272
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("b"), Eval("\"test\""));
73+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("c"), Eval("#(1 2)"));
7374
Assert.AreEqual(AtomHelper.True, Eval("(eq? a a)"));
7475
Assert.AreEqual(AtomHelper.True, Eval("(eq? b b)"));
76+
Assert.AreEqual(AtomHelper.True, Eval("(eq? c c)"));
7577
Assert.AreEqual(AtomHelper.True, Eval("(eq? + +)"));
7678
Assert.AreEqual(AtomHelper.False, Eval("(eq? (1 . 2) (1 . 2))"));
7779
}

src/Scheme.NET.Tests/ProcedureTests/EqualTest.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,9 +69,23 @@ public void TestNil()
6969
public void TestLocs()
7070
{
7171
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("a"), Eval("(1 . 2)"));
72+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("a2"), Eval("(1 . 3)"));
73+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("a3"), Eval("(1 . 2)"));
7274
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("b"), Eval("\"test\""));
75+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("b2"), Eval("\"testa\""));
76+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("b3"), Eval("\"test\""));
77+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("c"), Eval("#(1 2)"));
78+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("c2"), Eval("#(1 3)"));
79+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("c3"), Eval("#(1 2)"));
7380
Assert.AreEqual(AtomHelper.True, Eval("(equal? a a)"));
81+
Assert.AreEqual(AtomHelper.False, Eval("(equal? a a2)"));
82+
Assert.AreEqual(AtomHelper.True, Eval("(equal? a a3)"));
7483
Assert.AreEqual(AtomHelper.True, Eval("(equal? b b)"));
84+
Assert.AreEqual(AtomHelper.False, Eval("(equal? b b2)"));
85+
Assert.AreEqual(AtomHelper.True, Eval("(equal? b b3)"));
86+
Assert.AreEqual(AtomHelper.True, Eval("(equal? c c)"));
87+
Assert.AreEqual(AtomHelper.False, Eval("(equal? c c2)"));
88+
Assert.AreEqual(AtomHelper.True, Eval("(equal? c c3)"));
7589
Assert.AreEqual(AtomHelper.True, Eval("(equal? + +)"));
7690
Assert.AreEqual(AtomHelper.True, Eval("(equal? (1 . 2) (1 . 2))"));
7791
Assert.AreEqual(AtomHelper.True, Eval("(equal? \"test\" \"test\")"));

src/Scheme.NET.Tests/ProcedureTests/EqvTest.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,8 +70,10 @@ public void TestLocs()
7070
{
7171
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("a"), Eval("(1 . 2)"));
7272
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("b"), Eval("\"test\""));
73+
Evaluator.GlobalScope.Define(AtomHelper.SymbolFromString("c"), Eval("#(1 2)"));
7374
Assert.AreEqual(AtomHelper.True, Eval("(eqv? a a)"));
7475
Assert.AreEqual(AtomHelper.True, Eval("(eqv? b b)"));
76+
Assert.AreEqual(AtomHelper.True, Eval("(eqv? c c)"));
7577
Assert.AreEqual(AtomHelper.True, Eval("(eqv? + +)"));
7678
Assert.AreEqual(AtomHelper.False, Eval("(eqv? (1 . 2) (1 . 2))"));
7779
}

src/Scheme.NET/Lib/Types.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ public static ISExpression Eqv(Scope scope, IEnumerable<ISExpression> args)
109109
return AtomHelper.BooleanFromBool(true);
110110
if ((a.IsCons() && b.IsCons()) ||
111111
(a.IsString() && b.IsString()) ||
112+
(a.IsVector() && b.IsVector()) ||
112113
(a.IsProcedure() && b.IsProcedure()))
113114
return AtomHelper.BooleanFromBool(a == b);
114115

src/Scheme.NET/Scheme/SExpressionExtensions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public static class SExpressionExtensions
1616
public static bool IsChar(this ISExpression sexpr) { return sexpr is CharAtom; }
1717
public static bool IsProcedure(this ISExpression sexpr) { return sexpr is Procedure; }
1818
public static bool IsCons(this ISExpression sexpr) { return sexpr is Cons; }
19+
public static bool IsVector(this ISExpression sexpr) { return sexpr is Vector; }
1920
public static bool IsNil(this ISExpression sexpr) { return sexpr is NilAtom; }
2021

2122
public static bool IsComplex(this ISExpression sexpr) { return IsNumber(sexpr); }

src/Scheme.NET/Scheme/Vector.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public bool Equals(ISExpression other)
2929
return false;
3030

3131
for (var i = 0; i < Values.Count(); i++)
32-
if (Values[i] != v.Values[i])
32+
if (!Values[i].Equals(v.Values[i]))
3333
return false;
3434

3535
return true;

0 commit comments

Comments
 (0)