From 67f56f0795ac0214f9828c42f8face229e204c1d Mon Sep 17 00:00:00 2001 From: David Miller Date: Sat, 21 Feb 2009 06:55:20 +0000 Subject: ClojureCLR: added ClojureCLR project to repo. --- .../Clojure.Tests/LibTests/AReferenceTests.cs | 98 ++++++++++++++++++++++ 1 file changed, 98 insertions(+) create mode 100644 ClojureCLR/Clojure/Clojure.Tests/LibTests/AReferenceTests.cs (limited to 'ClojureCLR/Clojure/Clojure.Tests/LibTests/AReferenceTests.cs') diff --git a/ClojureCLR/Clojure/Clojure.Tests/LibTests/AReferenceTests.cs b/ClojureCLR/Clojure/Clojure.Tests/LibTests/AReferenceTests.cs new file mode 100644 index 00000000..8f621ae2 --- /dev/null +++ b/ClojureCLR/Clojure/Clojure.Tests/LibTests/AReferenceTests.cs @@ -0,0 +1,98 @@ +/** + * 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 Rhino.Mocks; + +using clojure.lang; + +using RMExpect = Rhino.Mocks.Expect; + +namespace Clojure.Tests.LibTests +{ + + [TestFixture] + public class AReferenceTests : AssertionHelper + { + // AReference is abstract. We need a class to instantiate. + + class ConcreteAReference : AReference + { + public ConcreteAReference() : base() { } + public ConcreteAReference(IPersistentMap meta) : base(meta) { } + } + + + #region C-tor tests + + [Test] + public void Default_ctor_creates_with_null_metadata() + { + ConcreteAReference c = new ConcreteAReference(); + Expect(c.meta(), Null); + } + + [Test] + public void Map_ctor_creates_with_given_metadata() + { + MockRepository mocks = new MockRepository(); + IPersistentMap meta = mocks.StrictMock(); + mocks.ReplayAll(); + + ConcreteAReference c = new ConcreteAReference(meta); + Expect(c.meta(), EqualTo(meta)); + + mocks.VerifyAll(); + } + + #endregion + + + #region IReference tests + + [Test] + public void AlterMeta_changes_meta() + { + MockRepository mocks = new MockRepository(); + IPersistentMap meta = mocks.StrictMock(); + IFn fn = mocks.StrictMock(); + RMExpect.Call(fn.applyTo(null)).IgnoreArguments().Return(meta); + mocks.ReplayAll(); + + ConcreteAReference c = new ConcreteAReference(); + c.alterMeta(fn, null); + + Expect(c.meta(), EqualTo(meta)); + mocks.VerifyAll(); + } + + [Test] + public void ResetMeta_sets_meta() + { + MockRepository mocks = new MockRepository(); + IPersistentMap meta = mocks.StrictMock(); + mocks.ReplayAll(); + + ConcreteAReference c = new ConcreteAReference(); + c.resetMeta(meta); + + Expect(c.meta(), EqualTo(meta)); + mocks.VerifyAll(); + } + + + #endregion + } +} -- cgit v1.2.3-18-g5258