private static Tuple <double, double, double, double> TestEqualsCore() { Assert.IsTrue( new MessagePackString(new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' }, false).Equals( new MessagePackString(new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' }, false) ), "Binary-Binary-True" ); Assert.IsTrue( new MessagePackString(new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' }, false).Equals( new MessagePackString("ABC") ), "Binary-String-True" ); Assert.IsTrue( new MessagePackString("ABC").Equals( new MessagePackString(new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' }, false) ), "String-Binary-True" ); Assert.IsTrue( new MessagePackString("ABC").Equals( new MessagePackString("ABC") ), "String-String-True" ); Assert.IsFalse( new MessagePackString(new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' }, false).Equals( new MessagePackString(new byte[] { ( byte )'A', ( byte )'B', ( byte )'D' }, false) ), "Binary-Binary-False" ); Assert.IsFalse( new MessagePackString(new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' }, false).Equals( new MessagePackString("ABD") ), "Binary-String-False" ); Assert.IsFalse( new MessagePackString("ABD").Equals( new MessagePackString(new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' }, false) ), "String-Binary-False" ); Assert.IsFalse( new MessagePackString("ABC").Equals( new MessagePackString("ABD") ), "String-String-False" ); var values = new[] { new MessagePackString(new byte[0], false), new MessagePackString(new byte[] { 0x20 }, false), new MessagePackString(new byte[] { 0xff }, false), new MessagePackString(new byte[] { 1, 2, 3 }, false), new MessagePackString(new byte[] { 3, 2, 1 }, false) }; const int iteration = 10; double tinyAvg = Double.MaxValue; double smallAvg = Double.MaxValue; double mediumAvg = Double.MaxValue; double largeAvg = Double.MaxValue; var sw = new Stopwatch(); for (int i = 0; i < iteration; i++) { sw.Restart(); for (int x = 0; x < values.Length; x++) { Assert.That(values[x].Equals(null), Is.False); for (int y = 0; y < values.Length; y++) { Assert.That(values[x].Equals(values[y]), Is.EqualTo(x == y)); } } sw.Stop(); tinyAvg = Math.Min(tinyAvg, sw.Elapsed.Ticks * 10.0 / (values.Length * values.Length)); } var smallX = new MessagePackString(new String('A', 16)); var smallY = new MessagePackString(MessagePackConvert.EncodeString(new String('A', 16)), false); for (int i = 0; i < iteration; i++) { sw.Restart(); Assert.That(smallX.Equals(smallY), Is.True); sw.Stop(); smallAvg = Math.Min(smallAvg, sw.Elapsed.Ticks * 10.0); } var mediumX = new MessagePackString(new String('A', 1000)); var mediumY = new MessagePackString(MessagePackConvert.EncodeString(new String('A', 1000)), false); for (int i = 0; i < iteration; i++) { sw.Restart(); Assert.That(mediumX.Equals(mediumY), Is.True); sw.Stop(); mediumAvg = Math.Min(mediumAvg, sw.Elapsed.Ticks * 10.0); } var largeX = new MessagePackString(new String('A', 100000)); var largeY = new MessagePackString(MessagePackConvert.EncodeString(new String('A', 100000)), false); for (int i = 0; i < iteration; i++) { sw.Restart(); Assert.That(largeX.Equals(largeY), Is.True); sw.Stop(); largeAvg = Math.Min(largeAvg, sw.Elapsed.Ticks * 10.0); } return(Tuple.Create(tinyAvg, smallAvg, mediumAvg, largeAvg)); }
private static Tuple<double, double, double, double> TestEqualsCore() { Assert.IsTrue( new MessagePackString( new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' } ).Equals( new MessagePackString( new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' } ) ), "Binary-Binary-True" ); Assert.IsTrue( new MessagePackString( new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' } ).Equals( new MessagePackString( "ABC" ) ), "Binary-String-True" ); Assert.IsTrue( new MessagePackString( "ABC" ).Equals( new MessagePackString( new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' } ) ), "String-Binary-True" ); Assert.IsTrue( new MessagePackString( "ABC" ).Equals( new MessagePackString( "ABC" ) ), "String-String-True" ); Assert.IsFalse( new MessagePackString( new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' } ).Equals( new MessagePackString( new byte[] { ( byte )'A', ( byte )'B', ( byte )'D' } ) ), "Binary-Binary-False" ); Assert.IsFalse( new MessagePackString( new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' } ).Equals( new MessagePackString( "ABD" ) ), "Binary-String-False" ); Assert.IsFalse( new MessagePackString( "ABD" ).Equals( new MessagePackString( new byte[] { ( byte )'A', ( byte )'B', ( byte )'C' } ) ), "String-Binary-False" ); Assert.IsFalse( new MessagePackString( "ABC" ).Equals( new MessagePackString( "ABD" ) ), "String-String-False" ); var values = new[] { new MessagePackString( new byte[ 0 ] ), new MessagePackString( new byte[] { 0x20 } ), new MessagePackString( new byte[] { 0xff } ), new MessagePackString( new byte[] { 1, 2, 3 } ), new MessagePackString( new byte[] { 3, 2, 1 } ) }; const int iteration = 10; double tinyAvg = Double.MaxValue; double smallAvg = Double.MaxValue; double mediumAvg = Double.MaxValue; double largeAvg = Double.MaxValue; var sw = new Stopwatch(); for ( int i = 0; i < iteration; i++ ) { sw.Restart(); for ( int x = 0; x < values.Length; x++ ) { Assert.That( values[ x ].Equals( null ), Is.False ); for ( int y = 0; y < values.Length; y++ ) { Assert.That( values[ x ].Equals( values[ y ] ), Is.EqualTo( x == y ) ); } } sw.Stop(); tinyAvg = Math.Min( tinyAvg, sw.Elapsed.Ticks * 10.0 / ( values.Length * values.Length ) ); } var smallX = new MessagePackString( new String( 'A', 16 ) ); var smallY = new MessagePackString( MessagePackConvert.EncodeString( new String( 'A', 16 ) ) ); for ( int i = 0; i < iteration; i++ ) { sw.Restart(); Assert.That( smallX.Equals( smallY ), Is.True ); sw.Stop(); smallAvg = Math.Min( smallAvg, sw.Elapsed.Ticks * 10.0 ); } var mediumX = new MessagePackString( new String( 'A', 1000 ) ); var mediumY = new MessagePackString( MessagePackConvert.EncodeString( new String( 'A', 1000 ) ) ); for ( int i = 0; i < iteration; i++ ) { sw.Restart(); Assert.That( mediumX.Equals( mediumY ), Is.True ); sw.Stop(); mediumAvg = Math.Min( mediumAvg, sw.Elapsed.Ticks * 10.0 ); } var largeX = new MessagePackString( new String( 'A', 100000 ) ); var largeY = new MessagePackString( MessagePackConvert.EncodeString( new String( 'A', 100000 ) ) ); for ( int i = 0; i < iteration; i++ ) { sw.Restart(); Assert.That( largeX.Equals( largeY ), Is.True ); sw.Stop(); largeAvg = Math.Min( largeAvg, sw.Elapsed.Ticks * 10.0 ); } return Tuple.Create( tinyAvg, smallAvg, mediumAvg, largeAvg ); }