blob: d3eb82f9342288a0c7c0b189a9904c536d4cc32e [file] [log] [blame]
// $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;
using org.apache.etch.tests;
using org.apache.etch.tests.types.Test1;
namespace etch.tests
{
[TestFixture]
public class TestTest1DotCsharp
{
[TestFixtureSetUp]
public void First()
{
Console.WriteLine();
Console.Write( "TestTest" );
}
[Test]
public void const_booleans()
{
Assert.IsFalse( ConstsTest1.BOOL1 );
Assert.IsTrue( ConstsTest1.BOOL2 );
}
[Test]
public void const_bytes()
{
Assert.AreEqual( sbyte.MinValue, ConstsTest1.BYTE1 );
Assert.AreEqual( (sbyte) -1, ConstsTest1.BYTE2 );
Assert.AreEqual( (sbyte) 0, ConstsTest1.BYTE3 );
Assert.AreEqual( (sbyte) 1, ConstsTest1.BYTE4 );
Assert.AreEqual( sbyte.MaxValue, ConstsTest1.BYTE5 );
}
[Test]
public void const_shorts()
{
Assert.AreEqual( short.MinValue, ConstsTest1.SHORT1 );
Assert.AreEqual( (short) -1, ConstsTest1.SHORT2 );
Assert.AreEqual( (short) 0, ConstsTest1.SHORT3 );
Assert.AreEqual( (short) 1, ConstsTest1.SHORT4 );
Assert.AreEqual( short.MaxValue, ConstsTest1.SHORT5 );
}
[Test]
public void const_ints()
{
Assert.AreEqual(int.MinValue, ConstsTest1.INT1);
Assert.AreEqual(-1, ConstsTest1.INT2);
Assert.AreEqual(0, ConstsTest1.INT3);
Assert.AreEqual(1, ConstsTest1.INT4);
Assert.AreEqual(int.MaxValue, ConstsTest1.INT5);
}
[Test]
public void const_longs()
{
Assert.AreEqual(long.MinValue, ConstsTest1.LONG1);
Assert.AreEqual((long)-1, ConstsTest1.LONG2);
Assert.AreEqual((long)0, ConstsTest1.LONG3);
Assert.AreEqual((long)1, ConstsTest1.LONG4);
Assert.AreEqual(long.MaxValue, ConstsTest1.LONG5);
}
[Test]
public void const_floats()
{
Assert.AreEqual(1.4e-45f, ConstsTest1.FLOAT1);
Assert.AreEqual((float)-1, ConstsTest1.FLOAT2);
Assert.AreEqual((float)0, ConstsTest1.FLOAT3);
Assert.AreEqual((float)1, ConstsTest1.FLOAT4);
Assert.AreEqual(3.4028235e38f, ConstsTest1.FLOAT5);
}
[Test]
public void const_doubles()
{
Assert.AreEqual(4.9e-324, ConstsTest1.DOUBLE1);
Assert.AreEqual((double)-1, ConstsTest1.DOUBLE2);
Assert.AreEqual((double)0, ConstsTest1.DOUBLE3);
Assert.AreEqual((double)1, ConstsTest1.DOUBLE4);
Assert.AreEqual(1.7976931348623157e308, ConstsTest1.DOUBLE5);
}
[Test]
public void const_strings()
{
Assert.AreEqual("", ConstsTest1.STRING1);
Assert.AreEqual("a", ConstsTest1.STRING2);
Assert.AreEqual("abc", ConstsTest1.STRING3);
Assert.AreEqual("a\tb\tc\r\n", ConstsTest1.STRING4);
Assert.AreEqual("x x", ConstsTest1.STRING5);
Assert.AreEqual("x\u00bfx", ConstsTest1.STRING6);
Assert.AreEqual("x\u03a9x", ConstsTest1.STRING7);
Assert.AreEqual("x\\x", ConstsTest1.STRING8);
Assert.AreEqual("x'x", ConstsTest1.STRING9);
Assert.AreEqual("x\"x", ConstsTest1.STRING10);
}
[Test]
public void enum_E1()
{
//Assert.AreEqual( 3, E1.values().Length );
Assert.IsNotNull( E1.A );
Assert.IsNotNull( E1.B );
Assert.IsNotNull( E1.C );
//Assert.AreEqual( E1.A, E1.valueOf( "A" ) );
//Assert.AreEqual( E1.B, E1.valueOf( "B" ) );
//Assert.AreEqual( E1.C, E1.valueOf( "C" ) );
//Assert.AreEqual( 0, E1.A.ordinal() );
//Assert.AreEqual( 1, E1.B.ordinal() );
//Assert.AreEqual( 2, E1.C.ordinal() );
}
[Test]
public void struct_S1()
{
S1 s = new S1( 1, 2, 3 );
Assert.AreEqual( 1, s.x );
Assert.AreEqual( 2, s.y );
Assert.AreEqual( 3, s.z );
s = new S1( null, null, null );
Assert.IsNull( s.x );
Assert.IsNull( s.y );
Assert.IsNull( s.z );
s = new S1();
Assert.IsNull( s.x );
Assert.IsNull( s.y );
Assert.IsNull( s.z );
s.x = 4;
s.y = 5;
s.z = 6;
Assert.AreEqual( 4, s.x );
Assert.AreEqual( 5, s.y );
Assert.AreEqual( 6, s.z );
s.x = null;
Assert.IsNull( s.x );
s.x = 7;
Assert.AreEqual( 7, s.x );
}
[Test]
public void except_Excp1()
{
Excp1 e = new Excp1( "foo", 23 );
Assert.AreEqual( "foo", e.msg );
Assert.AreEqual( 23, e.code );
e = new Excp1( null, null );
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
e = new Excp1();
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
e.msg = "bar";
e.code = 24;
Assert.AreEqual( "bar", e.msg );
Assert.AreEqual( 24, e.code );
e.msg = null;
e.code = null;
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
//Throwable t = e;
//Assert.IsTrue( t is Exception );
//Assert.IsFalse( t is RuntimeException );
}
[Test]
public void except_Excp2()
{
Excp2 e = new Excp2();
Exception t = e;
Assert.IsTrue( t is Exception );
//Assert.IsTrue( t is RuntimeException );
}
[Test]
public void except_Excp3()
{
Excp3 e = new Excp3();
Exception t = e;
Assert.IsTrue( t is Exception );
//Assert.IsTrue( t is RuntimeException );
}
[Test]
public void except_Excp4()
{
Excp4 e = new Excp4();
Exception t = e;
Assert.IsTrue( t is Exception );
//Assert.IsFalse( t is Exception );
}
[Test]
public void method_nothing()
{
test.nothing();
}
[Test]
public void method_incr1()
{
Assert.AreEqual( 2, test.incr( 1 ) );
}
[Test]
public void method_incr2()
{
Assert.AreEqual( 3, test.incr( 2 ) );
}
[Test]
public void method_incr3()
{
Assert.AreEqual( -1, test.incr( -2 ) );
}
[Test]
public void method_sub1()
{
Assert.AreEqual( 5, test.sub( 7, 2 ) );
}
[Test]
public void method_sub2()
{
Assert.AreEqual( 8, test.sub( 23, 15 ) );
}
[Test]
public void method_sub3()
{
Assert.AreEqual( -5, test.sub( 2, 7 ) );
}
[Test]
public void method_sum()
{
Assert.AreEqual( 24, test.sum( new int[] { 1, 2, 3, 7, 11 } ) );
}
[Test]
public void method_trans1()
{
Assert.AreEqual( 2, test.trans( E1.A, 5 ) ); // divide by 2
}
[Test]
public void method_trans2()
{
Assert.AreEqual( 10, test.trans( E1.B, 5 ) ); // mul by 2
}
[Test]
public void method_trans3()
{
Assert.AreEqual( 12, test.trans( E1.C, 5 ) ); // add 7
}
[Test]
public void method_dist1()
{
Assert.AreEqual( Math.Sqrt( 3 ), test.dist( new S1( 1, 1, 1 ), new S1( 0, 0, 0 ) ) );
}
[Test]
public void method_dist2()
{
Assert.AreEqual( Math.Sqrt( 35 ), test.dist( new S1( 1, 2, 3 ), new S1( 6, 5, 4 ) ) );
}
[Test]
public void method_dist3()
{
Assert.AreEqual( Math.Sqrt( 56 ), test.dist( new S1( 1, 2, 3 ), new S1( -1, -2, -3 ) ) );
}
[Test]
public void method_fill1()
{
int[] x = test.fill( 0, 1 );
Assert.AreEqual( 0, x.Length );
foreach (int i in x)
Assert.AreEqual( 1, i );
}
[Test]
public void method_fill2()
{
int[] x = test.fill( 1, 2 );
Assert.AreEqual( 1, x.Length );
foreach (int i in x)
Assert.AreEqual( 2, i );
}
[Test]
public void method_fill3()
{
int[] x = test.fill( 2, 3 );
Assert.AreEqual( 2, x.Length );
foreach (int i in x)
Assert.AreEqual( 3, i );
}
[Test]
public void method_blow1()
{
try
{
test.blow( "foo", 2 );
Assert.IsTrue( false, "blow did not throw" );
}
catch( Excp1 e )
{
Assert.AreEqual( "foo", e.msg );
Assert.AreEqual( 2, e.code );
}
}
[Test]
public void method_blow2()
{
try
{
test.blow( "bar", 3 );
Assert.IsTrue( false, "blow did not throw" );
}
catch( Excp1 e )
{
Assert.AreEqual( "bar", e.msg );
Assert.AreEqual( 3, e.code );
}
}
[Test]
public void method_beets1()
{
Assert.AreEqual( 5, test.beets( E1.A ) );
}
[Test]
public void method_beets2()
{
try
{
test.beets( E1.B );
Assert.IsTrue( false, "beets did not throw" );
}
catch ( Excp3 )
{
Assert.IsTrue( true );
}
}
[Test]
public void method_beets3()
{
try
{
test.beets( E1.C );
Assert.IsTrue(false, "beets did not throw" );
}
catch ( Excp4 )
{
Assert.IsTrue( true );
}
}
//[Test]
//public void method_beets4()
//{
// Assert.IsNull( test.beets( null ) );
//}
//
//Verify that an object can be passed as a parameter in a stuct.
//
[Test]
public void struct_S3()
{
testS3Helper( "bool", ConstsTest1.BOOL2 );
testS3Helper( "byte", ConstsTest1.BYTE5 );
testS3Helper( "short", ConstsTest1.SHORT5 );
testS3Helper("int", ConstsTest1.INT5);
testS3Helper("long", ConstsTest1.LONG5);
testS3Helper("float", ConstsTest1.FLOAT5);
testS3Helper("double", ConstsTest1.DOUBLE5);
testS3Helper("string", ConstsTest1.STRING3);
}
/*
* Verify that an array of objects can be passed as a parameter
* in a stuct.
*/
[Test]
public void struct_S4()
{
int sz = 10;
testS4Helper(sz, "boolean", ConstsTest1.BOOL2 );
testS4Helper(sz, "byte", ConstsTest1.BYTE5 );
testS4Helper(sz, "short", ConstsTest1.SHORT5 );
testS4Helper(sz, "int", ConstsTest1.INT5);
testS4Helper(sz, "long", ConstsTest1.LONG5);
testS4Helper(sz, "float", ConstsTest1.FLOAT5);
testS4Helper(sz, "double", ConstsTest1.DOUBLE5);
testS4Helper(sz, "string", ConstsTest1.STRING3);
}
// Verify that an object can be passed as a parameter in an
// exception
[Test]
public void except_Excp5()
{
int code = 500;
String msg = "Excp5";
testExcp5Helper(msg, code, ConstsTest1.BOOL1);
testExcp5Helper (msg, code, ConstsTest1.BYTE5);
testExcp5Helper (msg, code, ConstsTest1.SHORT5);
testExcp5Helper(msg, code, ConstsTest1.INT5);
testExcp5Helper(msg, code, ConstsTest1.LONG5);
testExcp5Helper(msg, code, ConstsTest1.FLOAT5);
testExcp5Helper(msg, code, ConstsTest1.DOUBLE5);
testExcp5Helper(msg, code, ConstsTest1.STRING3);
}
[Test]
public void except_Excp6()
{
int sz = 10;
int code = 500;
String msg = "Excp6";
testExcp6Helper(sz, msg, code, ConstsTest1.BOOL1);
testExcp6Helper( sz, msg, code, ConstsTest1.BYTE5 );
testExcp6Helper( sz, msg, code, ConstsTest1.SHORT5 );
testExcp6Helper(sz, msg, code, ConstsTest1.INT5);
testExcp6Helper(sz, msg, code, ConstsTest1.LONG5);
testExcp6Helper(sz, msg, code, ConstsTest1.FLOAT5);
testExcp6Helper(sz, msg, code, ConstsTest1.DOUBLE5);
testExcp6Helper(sz, msg, code, ConstsTest1.STRING3);
}
[Test]
public void method_throwExcp5()
{
String msg = "throwExcp5";
int code = 500;
method_throwExcp5Helper(msg, code, ConstsTest1.BOOL1);
method_throwExcp5Helper( msg, code, ConstsTest1.BYTE5 );
method_throwExcp5Helper( msg, code, ConstsTest1.SHORT5 );
method_throwExcp5Helper(msg, code, ConstsTest1.INT5);
method_throwExcp5Helper(msg, code, ConstsTest1.LONG5);
method_throwExcp5Helper(msg, code, ConstsTest1.FLOAT5);
method_throwExcp5Helper(msg, code, ConstsTest1.DOUBLE5);
method_throwExcp5Helper(msg, code, ConstsTest1.STRING3);
}
[Test]
public void method_throwExcp6()
{
String msg = "throwExcp6";
int code = 500;
int sz = 10;
method_throwExcp6Helper(sz, msg, code, ConstsTest1.BOOL1);
method_throwExcp6Helper( sz, msg, code, ConstsTest1.BYTE5 );
method_throwExcp6Helper( sz, msg, code, ConstsTest1.SHORT5 );
method_throwExcp6Helper(sz, msg, code, ConstsTest1.INT5);
method_throwExcp6Helper(sz, msg, code, ConstsTest1.LONG5);
method_throwExcp6Helper(sz, msg, code, ConstsTest1.FLOAT5);
method_throwExcp6Helper(sz, msg, code, ConstsTest1.DOUBLE5);
method_throwExcp6Helper(sz, msg, code, ConstsTest1.STRING3);
}
#region Helper methods
private void testS3Helper( string type, object value )
{
S3 s = new S3( type, value );
Assert.AreEqual( type, s.tipe );
Assert.AreEqual( value, s.x );
s = new S3( null, null );
Assert.IsNull(s.tipe);
Assert.IsNull( s.x );
s = new S3();
Assert.IsNull( s.tipe );
Assert.IsNull( s.x );
s.tipe = type;
s.x = value;
Assert.AreEqual( type, s.tipe );
Assert.AreEqual( value, s.x );
s.x = null;
Assert.IsNull( s.x );
s.x = value;
Assert.AreEqual( value, s.x );
}
public void testS4Helper( int sz, string type, object value )
{
object[] myObject = test.fillObject( sz, value );
S4 s = new S4( type, myObject );
Assert.AreEqual( type, s.tipe );
Assert.AreEqual( sz, myObject.Length );
for ( int i = 0; i < myObject.Length; i++ )
Assert.AreEqual( value, myObject[ i ] );
}
private void testExcp5Helper( String msg, int code, Object value )
{
Excp5 e = new Excp5( msg, code, value );
Assert.AreEqual( msg, e.msg );
Assert.AreEqual( code, e.code );
Assert.AreEqual( value, e.x);
e = new Excp5( null, null, null );
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
Assert.IsNull( e.x);
e = new Excp5();
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
Assert.IsNull( e.x );
e.msg = msg;
e.code = code;
e.x = value;
Assert.AreEqual( msg, e.msg );
Assert.AreEqual( code, e.code );
Assert.AreEqual( value, e.x );
e.msg = null;
e.code = null;
e.x = null;
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
Assert.IsNull( e.x );
//Throwable t = e;
Assert.IsTrue( e is Exception );
//assertFalse( t instanceof RuntimeException );
}
private void testExcp6Helper( int sz, String msg, int code, Object value )
{
Object[] myObject = test.fillObject( sz, value );
Excp6 e = new Excp6( msg, code, myObject );
Assert.AreEqual( msg, e.msg );
Assert.AreEqual( code, e.code );
for ( int i = 0; i < myObject.Length; i++ )
{
Assert.AreEqual( value, myObject[i] );
}
e = new Excp6( null, null, null );
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
Assert.IsNull( e.x );
e = new Excp6();
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
Assert.IsNull( e.x );
e.msg = msg;
e.code = code;
e.x = myObject;
Assert.AreEqual( msg, e.msg );
Assert.AreEqual( code, e.code );
for ( int i = 0; i < myObject.Length ; i++ )
{
Assert.AreEqual( value, myObject[i] );
}
e.msg = null;
e.code = null;
e.x = null;
Assert.IsNull( e.msg );
Assert.IsNull( e.code );
Assert.IsNull( e.x );
//Exception t = e;
Assert.IsTrue( e is Exception );
// assertFalse( t is RuntimeException );
}
private void method_throwExcp5Helper( String msg, int code, Object value )
{
try
{
test.throwExcp5( msg, code, value );
Assert.Fail( "throwExcp5 did not throw" );
}
catch ( Excp5 e )
{
Assert.AreEqual( msg, e.msg );
Assert.AreEqual( code, e.code );
Assert.AreEqual( value, e.x );
}
}
private void method_throwExcp6Helper( int sz, String msg, int code, Object value )
{
Object[] myObject = test.fillObject( sz, value );
try
{
test.throwExcp6( msg, code, myObject );
Assert.Fail( "throwExcp5 did not throw" );
}
catch ( Excp6 e )
{
Assert.AreEqual( msg, e.msg );
Assert.AreEqual( code, e.code );
for ( int i = 0; i < myObject.Length; i++ )
{
Assert.AreEqual( value, e.x[ i ] );
}
}
}
private void method_fillObjectHelper( int sz, Object value )
{
Object[] myObject = test.fillObject( sz, value );
for ( int i = 0; i < myObject.Length; i++ )
{
Assert.AreEqual( value, myObject[ i ] );
}
}
#endregion
private Test1 test = new FakeTest1();
}
}