| // $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 System.Collections.Generic; |
| using Org.Apache.Etch.Bindings.Csharp.Support; |
| using NUnit.Framework; |
| |
| namespace Org.Apache.Etch.Bindings.Csharp.Msg |
| { |
| [TestFixture] |
| public class TestStructValue |
| { |
| private readonly ValueFactory vf = new DummyValueFactory(); |
| |
| [TestFixtureSetUp] |
| public void First() |
| { |
| Console.WriteLine(); |
| Console.Write( "TestStructValue" ); |
| } |
| |
| private XType mt1 = new XType("one"); |
| private XType mt2 = new XType("two"); |
| private Field mf1 = new Field( "f1" ); |
| private Field mf2 = new Field( "f2" ); |
| private Field mf3 = new Field( "f3" ); |
| private Field mf4 = new Field( "f4" ); |
| private Field mf5 = new Field( "f5" ); |
| private Field mf6 = new Field( "f6" ); |
| |
| public TestStructValue() |
| { |
| mt1.PutValidator( mf1, Validator_boolean.Get( 0 ) ); |
| mt1.PutValidator( mf2, Validator_boolean.Get( 1 ) ); |
| mt1.PutValidator( mf3, Validator_int.Get( 0 ) ); |
| mt1.PutValidator( mf4, Validator_int.Get( 1 ) ); |
| mt1.PutValidator( mf5, Validator_string.Get( 0 ) ); |
| mt1.PutValidator( mf6, Validator_string.Get( 1 ) ); |
| } |
| |
| [Test] |
| public void Test2str() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| Assert.AreEqual( "one(785945377): {}", sv.ToString() ); |
| |
| sv = new StructValue(mt2, vf); |
| Assert.AreEqual( "two(827843303): {}", sv.ToString() ); |
| |
| sv = new StructValue(mt1, vf); |
| sv.Add( mf1, true ); |
| Assert.AreEqual( "one(785945377): {f1(1512176592)=True}", sv.ToString() ); |
| |
| sv = new StructValue(mt1, vf); |
| sv.Add( mf3, 23 ); |
| Assert.AreEqual( "one(785945377): {f3(1512176594)=23}", sv.ToString() ); |
| |
| sv = new StructValue(mt1, vf); |
| sv.Add( mf1, false ); |
| sv.Add( mf3, 74 ); |
| Assert.AreEqual( "one(785945377): {f1(1512176592)=False, f3(1512176594)=74}", sv.ToString() ); |
| } |
| |
| [Test] |
| public void GetXType() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| Assert.AreSame(mt1, sv.GetXType); |
| |
| sv = new StructValue(mt2, vf); |
| Assert.AreSame(mt2, sv.GetXType); |
| } |
| |
| [Test] |
| public void IsType() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| Assert.IsTrue(sv.IsType(mt1)); |
| Assert.IsFalse(sv.IsType(mt2)); |
| |
| sv = new StructValue(mt2, vf); |
| Assert.IsTrue(sv.IsType(mt2)); |
| Assert.IsFalse(sv.IsType(mt1)); |
| } |
| |
| [Test] |
| public void CheckType_() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.CheckType(mt1); |
| try { sv.CheckType(mt2); Assert.IsTrue(false); } |
| catch(ArgumentException ) { |
| Assert.IsTrue(true); |
| } |
| |
| sv = new StructValue(mt2, vf); |
| sv.CheckType(mt2); |
| try { sv.CheckType(mt1); Assert.IsTrue(false); } |
| catch(ArgumentException ) { Assert.IsTrue(true); |
| } |
| } |
| |
| [Test] |
| public void Iterator() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| Assert.IsFalse( sv.GetEnumerator().MoveNext() ); |
| |
| sv.Add( mf1, true ); |
| |
| IEnumerator<KeyValuePair<Field, Object>> it = sv.GetEnumerator(); |
| Assert.IsTrue( it.MoveNext() ); |
| KeyValuePair<Field, Object> me = it.Current; |
| Assert.AreEqual( mf1, me.Key ); |
| Assert.AreEqual( true, me.Value ); |
| Assert.IsFalse( it.MoveNext() ); |
| |
| Dictionary<Field, Object> vals = new Dictionary<Field, object>(); |
| vals.Add( mf1, true ); |
| vals.Add( mf3, 2 ); |
| vals.Add( mf5, "a" ); |
| |
| sv.Add( mf3, 2 ); |
| sv.Add( mf5, "a" ); |
| |
| it = sv.GetEnumerator(); |
| while ( it.MoveNext() ) |
| { |
| me = it.Current; |
| Field key = me.Key; |
| Assert.IsTrue( vals.ContainsKey( key ) ); |
| Assert.AreEqual( vals[key], me.Value ); |
| vals.Remove( key ); |
| } |
| Assert.IsTrue( vals.Count == 0 ); |
| } |
| |
| public void CheckType1() |
| { |
| new StructValue(mt1, vf).CheckType(mt1); |
| new StructValue(mt2, vf).CheckType(mt2); |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void CheckType2() |
| { |
| new StructValue(mt1, vf).CheckType(mt2); |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void CheckType() |
| { |
| new StructValue(mt2, vf).CheckType(mt1); |
| } |
| |
| |
| [Test] |
| public void Get() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| Assert.IsTrue( sv.Count == 0 ); |
| Assert.AreEqual( 0, sv.Count ); |
| Assert.IsNull( sv.Get( mf1 ) ); |
| |
| sv.Add( mf1, true ); |
| Assert.IsFalse( sv.Count == 0 ); |
| Assert.AreEqual( 1, sv.Count ); |
| Assert.AreEqual( true, sv.Get( mf1 ) ); |
| |
| sv.Add( mf1, false ); |
| Assert.IsFalse( sv.Count == 0 ); |
| Assert.AreEqual( 1, sv.Count ); |
| Assert.AreEqual( false, sv.Get( mf1 ) ); |
| |
| sv.Add( mf1, null ); |
| Assert.IsTrue( sv.Count == 0 ); |
| Assert.AreEqual( 0, sv.Count ); |
| Assert.IsNull( sv.Get( mf1 ) ); |
| } |
| |
| |
| [Test] |
| public void Remove() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| Assert.IsTrue( sv.Count == 0 ); |
| Assert.AreEqual( 0, sv.Count ); |
| Assert.IsNull( sv.Get( mf1 ) ); |
| |
| sv.Remove( mf1 ); |
| Assert.IsTrue( sv.Count == 0 ); |
| Assert.AreEqual( 0, sv.Count ); |
| Assert.IsNull( sv.Get( mf1 ) ); |
| |
| sv.Add( mf1, true ); |
| Assert.IsFalse( sv.Count == 0 ); |
| Assert.AreEqual( 1, sv.Count ); |
| Assert.AreEqual( true, sv.Get( mf1 ) ); |
| |
| sv.Remove( mf1 ); |
| Assert.IsTrue( sv.Count == 0 ); |
| Assert.IsNull( sv.Get( mf1 ) ); |
| |
| sv.Remove( mf1 ); |
| Assert.AreEqual( 0, sv.Count ); |
| Assert.IsNull( sv.Get( mf1 ) ); |
| } |
| |
| |
| [Test] |
| public void Put1() |
| { |
| StructValue sv = new StructValue( mt1, vf ); |
| sv.Add( mf1, false ); |
| sv.Add( mf2, new Boolean[] { true, false } ); |
| sv.Add( mf3, 1 ); |
| sv.Add( mf4, new int[] { 1, 2 } ); |
| sv.Add( mf5, "a" ); |
| sv.Add( mf6, new String[] { "a", "b" } ); |
| Assert.AreEqual( 6, sv.Count ); |
| } |
| |
| |
| [Test] |
| public void Put2() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, null ); |
| sv.Add( mf2, null ); |
| sv.Add( mf3, null ); |
| sv.Add( mf4, null ); |
| sv.Add( mf5, null ); |
| sv.Add( mf6, null ); |
| Assert.AreEqual( 0, sv.Count ); |
| } |
| |
| |
| [Test] |
| public void Put3() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, false ); |
| sv.Add( mf2, new Boolean[] { true, false } ); |
| sv.Add( mf3, 1 ); |
| sv.Add( mf4, new int[] { 1, 2 } ); |
| sv.Add( mf5, "a" ); |
| sv.Add( mf6, new String[] { "a", "b" } ); |
| Assert.AreEqual( 6, sv.Count ); |
| |
| // now "remove" them all |
| |
| sv.Add( mf1, null ); |
| sv.Add( mf2, null ); |
| sv.Add( mf3, null ); |
| sv.Add( mf4, null ); |
| sv.Add( mf5, null ); |
| sv.Add( mf6, null ); |
| Assert.AreEqual( 0, sv.Count ); |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put5() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, (sbyte) 1 ); // wrong type |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put6() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, (short) 1 ); // wrong type |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put7() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, 1 ); // wrong type |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put8() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, (long) 1 ); // wrong type |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put9() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, (float) 1.2 ); // wrong type |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put10() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, 1.2 ); // wrong type |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put11() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf1, "a" ); // wrong type |
| } |
| |
| |
| [Test] |
| public void put12() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf2, null ); |
| } |
| |
| |
| [Test] |
| public void put13() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf2, new Boolean[] {} ); |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put14() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf2, true ); |
| } |
| |
| |
| [Test][ExpectedException(typeof(ArgumentException))] |
| public void put15() |
| { |
| StructValue sv = new StructValue(mt1, vf); |
| sv.Add( mf2, new Boolean[][] {} ); |
| } |
| } |
| } |