// $Id$ // // Licensed to the Apache Software Foundation (ASF) under one // or more contributor license agreements. See the NOTICE file // distributed with this work for additional information // regarding copyright ownership. The ASF licenses this file // to you under the Apache License, Version 2.0 (the // "License"); you may not use this file except in compliance // with the License. You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, // software distributed under the License is distributed on an // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY // KIND, either express or implied. See the License for the // specific language governing permissions and limitations // under the License. // using System; using NUnit.Framework; namespace Org.Apache.Etch.Bindings.Csharp.Msg { [TestFixture] public class TestIdName { [TestFixtureSetUp] public void First() { Console.WriteLine(); Console.Write( "TestIdName" ); } [Test] public void Id() { Assert.AreEqual(1, new IdName(1, "foo").Id); Assert.AreEqual(1, new IdName(1, "bar").Id); Assert.AreEqual(2, new IdName(2, "foo").Id); Assert.AreEqual(2, new IdName(2, "bar").Id); } [Test] public void Name() { Assert.AreEqual("foo", new IdName(1, "foo").Name); Assert.AreEqual("bar", new IdName(1, "bar").Name); Assert.AreEqual("foo", new IdName(2, "foo").Name); Assert.AreEqual("bar", new IdName(2, "bar").Name); } [Test] public void XToString() { Assert.AreEqual( "foo(1)", new IdName( 1, "foo" ).ToString() ); Assert.AreEqual( "bar(1)", new IdName( 1, "bar" ).ToString() ); Assert.AreEqual( "foo(2)", new IdName( 2, "foo" ).ToString() ); Assert.AreEqual( "bar(2)", new IdName( 2, "bar" ).ToString() ); } [Test] public void EqualsObject() { Assert.IsTrue( new IdName( 1, "foo" ).Equals( new IdName( 1, "foo" ) ) ); Assert.IsTrue( new IdName( 1, "bar" ).Equals( new IdName( 1, "bar" ) ) ); Assert.IsTrue( new IdName( 2, "foo" ).Equals( new IdName( 2, "foo" ) ) ); Assert.IsTrue( new IdName( 2, "bar" ).Equals( new IdName( 2, "bar" ) ) ); Assert.IsFalse( new IdName( 1, "foo" ).Equals( new IdName( 2, "foo" ) ) ); // id changed Assert.IsFalse( new IdName( 1, "foo" ).Equals( new IdName( 1, "bar" ) ) ); // name changed Assert.IsFalse( new IdName( 1, "foo" ).Equals( new IdName( 2, "bar" ) ) ); // id and name changed Assert.IsFalse( new IdName( 1, "foo" ).Equals( null ) ); Assert.IsFalse( new IdName( 1, "foo" ).Equals( 1 ) ); Assert.IsFalse( new IdName( 1, "foo" ).Equals( true ) ); } [Test] public void HashCodeObject() { // you cannot really predict when HashCode will not be the same. the // rule is that it must be the same when the objects would compare equal. Assert.AreEqual( new IdName( 1, "foo" ).GetHashCode(), new IdName( 1, "foo" ).GetHashCode() ); Assert.AreEqual( new IdName( 2, "foo" ).GetHashCode(), new IdName( 2, "foo" ).GetHashCode() ); Assert.AreEqual( new IdName( 1, "bar" ).GetHashCode(), new IdName( 1, "bar" ).GetHashCode() ); Assert.AreEqual( new IdName( 2, "bar" ).GetHashCode(), new IdName( 2, "bar" ).GetHashCode() ); } [Test] public void Hash() { Assert.AreEqual(5381, IdName.Hash("")); Assert.AreEqual(352988316, IdName.Hash("a")); Assert.AreEqual(1511848646, IdName.Hash("ab")); Assert.AreEqual(669497117, IdName.Hash("abc")); Assert.AreEqual(-1994190713, IdName.Hash("abcd")); Assert.AreEqual(-802680418, IdName.Hash("abcde")); Assert.AreEqual(1266308680, IdName.Hash("abcdef")); Assert.AreEqual(-379372513, IdName.Hash("abcdefg")); Assert.AreEqual(-1416967159, IdName.Hash("abcdefgh")); Assert.AreEqual(53556896, IdName.Hash("abcdefghi")); Assert.AreEqual(-4427318, IdName.Hash("abcdefghij")); } } }