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/Clojure.Tests/LibTests/IObjTests.cs | 91 ++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 ClojureCLR/Clojure/Clojure.Tests/LibTests/IObjTests.cs (limited to 'ClojureCLR/Clojure/Clojure.Tests/LibTests/IObjTests.cs') diff --git a/ClojureCLR/Clojure/Clojure.Tests/LibTests/IObjTests.cs b/ClojureCLR/Clojure/Clojure.Tests/LibTests/IObjTests.cs new file mode 100644 index 00000000..34f1ba72 --- /dev/null +++ b/ClojureCLR/Clojure/Clojure.Tests/LibTests/IObjTests.cs @@ -0,0 +1,91 @@ +/** + * 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; + +namespace Clojure.Tests.LibTests +{ + /// + /// Base class for testing the IMeta interface functionality. + /// + public abstract class IObjTests : AssertionHelper + { + /// + /// Object to test for null meta. Set null if no test. Initialize in Setup. + /// + protected IObj _objWithNullMeta; + + + /// + /// The object to test. Initialize in Setup. + /// + protected IObj _obj; + + /// + /// Expected type of return from withMeta. Set null if no test. Initialize in Setup. + /// + protected Type _expectedType; + + + MockRepository _mocks = null; + IPersistentMap _meta = null; + + void InitMocks() + { + _mocks = new MockRepository(); + _meta = _mocks.StrictMock(); + _mocks.ReplayAll(); + } + + + [Test] + public void withMeta_has_correct_meta() + { + InitMocks(); + IObj obj2 = _obj.withMeta(_meta); + Expect(obj2.meta(), SameAs(_meta)); + _mocks.VerifyAll(); + } + + [Test] + public void withMeta_returns_correct_type() + { + if (_expectedType == null) + return; + + InitMocks(); + IObj obj2 = _obj.withMeta(_meta); + Expect(obj2, TypeOf(_expectedType)); + _mocks.VerifyAll(); + } + + [Test] + public void withMeta_returns_self_if_no_change() + { + IObj obj2 = _obj.withMeta(_obj.meta()); + Expect(obj2, SameAs(_obj)); + } + + [Test] + public void Verify_Null_Meta() + { + if (_objWithNullMeta == null) + return; + Expect(_objWithNullMeta.meta(), Null); + } + } +} -- cgit v1.2.3-18-g5258