aboutsummaryrefslogtreecommitdiff
path: root/ClojureCLR/Clojure/Clojure.Tests/LibTests/ISeqTestHelper.cs
diff options
context:
space:
mode:
authorDavid Miller <dmiller2718@gmail.com>2009-02-21 06:55:20 +0000
committerDavid Miller <dmiller2718@gmail.com>2009-02-21 06:55:20 +0000
commit67f56f0795ac0214f9828c42f8face229e204c1d (patch)
treef01b57d581c3a48d87fb4d72b023bc8d609a24cd /ClojureCLR/Clojure/Clojure.Tests/LibTests/ISeqTestHelper.cs
parent64d79207eed0fe057a19fe4d3d0f6b714a63c69a (diff)
ClojureCLR: added ClojureCLR project to repo.
Diffstat (limited to 'ClojureCLR/Clojure/Clojure.Tests/LibTests/ISeqTestHelper.cs')
-rw-r--r--ClojureCLR/Clojure/Clojure.Tests/LibTests/ISeqTestHelper.cs54
1 files changed, 54 insertions, 0 deletions
diff --git a/ClojureCLR/Clojure/Clojure.Tests/LibTests/ISeqTestHelper.cs b/ClojureCLR/Clojure/Clojure.Tests/LibTests/ISeqTestHelper.cs
new file mode 100644
index 00000000..ba04a65e
--- /dev/null
+++ b/ClojureCLR/Clojure/Clojure.Tests/LibTests/ISeqTestHelper.cs
@@ -0,0 +1,54 @@
+/**
+ * Copyright (c) David Miller. All rights reserved.
+ * The use and distribution terms for this software are covered by the
+ * Eclipse Public License 1.0 (http://opensource.org/licenses/eclipse-1.0.php)
+ * which can be found in the file epl-v10.html at the root of this distribution.
+ * By using this software in any fashion, you are agreeing to be bound by
+ * the terms of this license.
+ * You must not remove this notice, or any other, from this software.
+ **/
+
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using NUnit.Framework;
+using clojure.lang;
+
+namespace Clojure.Tests.LibTests
+{
+ public class ISeqTestHelper : AssertionHelper
+ {
+ public void VerifyISeqContents(ISeq s, IList<object> values)
+ {
+ int i=0;
+
+ for (; s != null; s = s.rest(), i++)
+ Expect(s.first(), EqualTo(values[i]));
+
+ Expect(i, EqualTo(values.Count));
+ }
+
+ public void VerifyISeqCons(ISeq s, object newVal, IList<object> values)
+ {
+ ISeq newSeq = s.cons(newVal);
+
+ Expect(newSeq.first(), EqualTo(newVal));
+ VerifyISeqContents(newSeq.rest(), values);
+ }
+
+ public void VerifyISeqRestTypes(ISeq s, Type type)
+ {
+ for ( ; s.rest() != null; s = s.rest())
+ Expect(s.rest(), InstanceOfType(type));
+ }
+
+ public void VerifyISeqRestMaintainsMeta(ISeq s)
+ {
+ IPersistentMap meta = ((IMeta)s).meta();
+
+ for (; s.rest() != null; s = s.rest())
+ Expect(((IMeta)s.rest()).meta(), EqualTo(meta));
+ }
+ }
+}