public void Equals_ComparedToObjectOfDifferentTypeThatCanBeCoercedIntoArrayInt_ReturnsTrue()
        {
            // Arrange
            var value1 = new SexpArrayInt(new[] { 2, -5, SexpArrayInt.Na });
            var value2 = new double[] { 2.0d, -5.0d, Convert.ToDouble(SexpArrayInt.Na) };
            var value3 = new List <int> {
                2, -5, SexpArrayInt.Na
            };
            var value4 = new SexpArrayDouble(new List <double> {
                2, -5, SexpArrayInt.Na
            });

            // Act & Assert

            // ReSharper disable RedundantCast
            Assert.True(value1.Equals(value2));
            Assert.True(value1.Equals(( object )value2));

            Assert.True(value1.Equals(value3));
            Assert.True(value1.Equals(( object )value3));

            Assert.True(value1.Equals(value4));
            Assert.True(value1.Equals(( object )value4));
            // ReSharper restore RedundantCast
        }
        public void AsDoubles_SexpConstructedUsingConstructorOrMake_ReturnsSameSetOfDoubles()
        {
            // Arrange
            var values1 = new double[1, 1] {
                { 2 }
            };
            var values2 = new double[3, 4] {
                { 8, 2, 7, 4 }, { 0, double.NaN, 5, -2 }, { 1, -4, -3, -8 }
            };
            const double values3 = -5d;
            var          values4 = new List <double> {
                4, 5, 6
            };

            // Act
            Sexp sexp1 = Sexp.Make(values1);
            Sexp sexp2 = Sexp.Make(values2);
            Sexp sexp3 = new SexpArrayDouble(values3);
            Sexp sexp4 = new SexpArrayDouble(values4);
            Sexp sexp5 = new SexpArrayDouble();

            // Assert
            Assert.Equal(new double[] { 2 }, sexp1.AsDoubles);
            Assert.Equal(new[] { 8, 0, 1, 2, double.NaN, -4, 7, 5, -3, 4, -2, -8 }, sexp2.AsDoubles);
            Assert.Equal(new double[] { -5 }, sexp3.AsDoubles);
            Assert.Equal(new double[] { 4, 5, 6 }, sexp4.AsDoubles);
            Assert.Equal(new double[] { }, sexp5.AsDoubles);
        }
        public void Equals_ComparedToObjectWithDifferentValuesReadFromR_ReturnsFalse()
        {
            using (var service = new Rservice())
            {
                // Arrange
                var value1A = service.RConnection["matrix( c( 1.1 , 2.6 , NA , -4.2 , -5.8 , 6.3 ) , ncol = 3 , byrow = TRUE )"];
                var value1B = new SexpArrayDouble(new[] { 1.1, -4.2, 2.6, -5.8, double.NaN, 6.3 });

                var value2A = service.RConnection["c( -4.4 , -2.2 , -1 )"];
                var value2B = new SexpArrayDouble(new[] { -4.4, -2.2, -1 });

                var value3A = service.RConnection["-.9"];
                var value3B = new SexpArrayDouble(-.9);

                var value4A = service.RConnection["numeric()"];
                var value4B = new SexpArrayDouble();

                // Act & Assert
                Assert.False(value3B.Equals(value2A));
                Assert.False(value2A.Equals(value4A));
                Assert.False(value3B.Equals(value2B));
                Assert.False(value4A.Equals(value1B));
                Assert.False(value3B.Equals(value1A));
                Assert.False(value4A.Equals(value3A));
                Assert.False(value1A.Equals(value2B));
                Assert.False(value2A.Equals(value3A));
                Assert.False(value3A.Equals(value1A));
                Assert.False(value1B.Equals(value4B));
            }
        }
        public void Various_DoubleTest()
        {
            // note: this test was ported from RserveCLI.  Not in the typical Arrange/Act/Assert format
            var zero = new SexpArrayDouble(0.0);
            var one  = new SexpArrayDouble(1.0);
            var na   = new SexpArrayDouble(SexpArrayDouble.Na);

            // ReSharper disable EqualExpressionComparison
            Assert.True(zero.Equals(zero));
            Assert.True(one.Equals(one));
            Assert.True(na.Equals(na));

            // ReSharper restore EqualExpressionComparison
            Assert.True(!zero.Equals(one));
            Assert.True(!zero.Equals(na));
            Assert.True(!one.Equals(na));
            Assert.True(zero.Equals(0));
            Assert.True(one.Equals(1));
            Assert.True(na.IsNa);
            Assert.True(zero.AsDouble == 0.0);
            Assert.True(one.AsDouble == 1.0);
            Assert.True(zero.AsInt == 0);
            Assert.True(one.AsInt == 1);
            Assert.True(double.IsNaN(na.AsDouble));

            foreach (var a in new Sexp[] { zero, one, na })
            {
                Assert.True(!a.Equals(new SexpNull()));
            }
        }
        public void IsNa_NaValueInConstructor_ReturnTrue()
        {
            // Arrange
            var sexp1 = new SexpArrayDouble(double.NaN);
            var sexp2 = new SexpArrayDouble(new[] { double.NaN });

            // Act & Assert
            Assert.True(sexp1.IsNa);
            Assert.True(sexp2.IsNa);
        }
        public void IsNa_NotNa_ReturnFalse()
        {
            // Arrange
            var sexp1 = new SexpArrayDouble(3.4);
            var sexp2 = new SexpArrayDouble(new[] { -8.3 });

            // Act & Assert
            Assert.False(sexp1.IsNa);
            Assert.False(sexp2.IsNa);
        }
        public void IsNa_SexpContainsZeroOrMultipleValues_ThrowsNotSupportedException()
        {
            // Arrange
            var sexp1 = new SexpArrayDouble();
            var sexp2 = new SexpArrayDouble(new double[] { });
            var sexp3 = new SexpArrayDouble(new[] { double.NaN, 4.4 });
            var sexp4 = new SexpArrayDouble(new[] { 4.4, -9.4 });

            // Act & Assert
            Assert.Throws <NotSupportedException>(() => sexp1.IsNa);
            Assert.Throws <NotSupportedException>(() => sexp2.IsNa);
            Assert.Throws <NotSupportedException>(() => sexp3.IsNa);
            Assert.Throws <NotSupportedException>(() => sexp4.IsNa);
        }
        public void Equals_ComparedToSameReferencedObject_ReturnsTrue()
        {
            // Arrange
            var value1 = new SexpArrayDouble();
            var value2 = new SexpArrayDouble(new[] { 2.3, double.NaN, 4 });
            var value3 = new SexpArrayDouble(-6.6);

            // Act & Assert
            Assert.True(value1.Equals(value1));
            Assert.True(value1.Equals(( object )value1));
            Assert.True(value2.Equals(value2));
            Assert.True(value2.Equals(( object )value2));
            Assert.True(value3.Equals(value3));
            Assert.True(value3.Equals(( object )value3));
        }
        public void Equals_ComparedToObjectOfDifferentType_ReturnsFalse()
        {
            // Arrange
            var value1 = new SexpArrayDouble(new[] { 2.3, double.NaN, 4 });
            var value2 = new SexpArrayBool(true);
            var value3 = new SexpArrayInt(new[] { 1, 3 });

            // Act & Assert

            // ReSharper disable RedundantCast
            Assert.False(value1.Equals(value2));
            Assert.False(value1.Equals(( object )value2));
            Assert.False(value1.Equals(value3));
            Assert.False(value1.Equals(( object )value3));
            // ReSharper restore RedundantCast
        }
        public void Equals_ComparedToObjectWithSameValues_ReturnsTrue()
        {
            // Arrange
            var value1A = new SexpArrayDouble();
            var value1B = new SexpArrayDouble();
            var value2A = new SexpArrayDouble(new[] { 1.2, double.NaN, -3.3 });
            var value2B = new SexpArrayDouble(new[] { 1.2, double.NaN, -3.3 });
            var value3A = new SexpArrayDouble(1.4);
            var value3B = new SexpArrayDouble(1.4);
            var value4A = new SexpArrayDouble(new[] { -8.4 });
            var value4B = new SexpArrayDouble(-8.4);

            // Act & Assert
            Assert.True(value1A.Equals(value1B));
            Assert.True(value2A.Equals(value2B));
            Assert.True(value3A.Equals(value3B));
            Assert.True(value4A.Equals(value4B));
        }
        public void Equals_ComparedToNull_ReturnsFalse()
        {
            // Arrange
            var value1 = new SexpArrayDouble();
            var value2 = new SexpArrayDouble(new[] { 2.3, double.NaN, 4 });
            var value3 = new SexpArrayDouble(6.5);

            // Act & Assert

            // ReSharper disable RedundantCast
            Assert.False(value1.Equals(( SexpArrayDouble )null));
            Assert.False(value1.Equals(( object )null));
            Assert.False(value2.Equals(( SexpArrayDouble )null));
            Assert.False(value2.Equals(( object )null));
            Assert.False(value3.Equals(( SexpArrayDouble )null));
            Assert.False(value3.Equals(( object )null));
            // ReSharper restore RedundantCast
        }
        public void Equals_ComparedToObjectWithDifferentValues_ReturnsFalse()
        {
            // Arrange
            var value1 = new SexpArrayDouble();
            var value2 = new SexpArrayDouble(-7.7);
            var value3 = new SexpArrayDouble(new[] { -1.2, -6.4, -3.3 });
            var value4 = new SexpArrayDouble(new[] { 1.2, double.NaN, -3.3 });

            // Act & Assert
            Assert.False(value1.Equals(value2));
            Assert.False(value1.Equals(value3));
            Assert.False(value1.Equals(value4));
            Assert.False(value2.Equals(value1));
            Assert.False(value2.Equals(value3));
            Assert.False(value2.Equals(value4));
            Assert.False(value3.Equals(value1));
            Assert.False(value3.Equals(value2));
            Assert.False(value3.Equals(value4));
            Assert.False(value4.Equals(value1));
            Assert.False(value4.Equals(value2));
            Assert.False(value4.Equals(value3));
        }
        public void Equals_ComparedToObjectOfDifferentTypeThatCanBeCoercedIntoArrayDouble_ReturnsTrue()
        {
            // Arrange
            var value1 = new SexpArrayDouble(new[] { 4d, -2d, -3d });
            var value2 = new List <double> {
                4, -2, -3
            };
            var value3 = new int[] { 4, -2, -3 };
            var value4 = new SexpArrayInt(new int[] { 4, -2, -3 });

            // Act & Assert

            // ReSharper disable RedundantCast
            Assert.True(value1.Equals(value2));
            Assert.True(value1.Equals(( object )value2));

            Assert.True(value1.Equals(value3));
            Assert.True(value1.Equals(( object )value3));

            Assert.True(value1.Equals(value4));
            Assert.True(value1.Equals(( object )value4));
            // ReSharper restore RedundantCast
        }
        public void IsNa_NaValueInConstructor_ReturnTrue()
        {
            // Arrange
            var sexp1 = new SexpArrayDouble( double.NaN );
            var sexp2 = new SexpArrayDouble( new[] { double.NaN } );

            // Act & Assert
            Assert.True( sexp1.IsNa );
            Assert.True( sexp2.IsNa );
        }
        public void Equals_ComparedToSameReferencedObject_ReturnsTrue()
        {
            // Arrange
            var value1 = new SexpArrayDouble();
            var value2 = new SexpArrayDouble( new[] { 2.3 , double.NaN , 4 } );
            var value3 = new SexpArrayDouble( -6.6 );

            // Act & Assert
            Assert.True( value1.Equals( value1 ) );
            Assert.True( value1.Equals( ( object )value1 ) );
            Assert.True( value2.Equals( value2 ) );
            Assert.True( value2.Equals( ( object )value2 ) );
            Assert.True( value3.Equals( value3 ) );
            Assert.True( value3.Equals( ( object )value3 ) );
        }
        public void Equals_ComparedToObjectWithSameValues_ReturnsTrue()
        {
            // Arrange
            var value1A = new SexpArrayDouble();
            var value1B = new SexpArrayDouble();
            var value2A = new SexpArrayDouble( new[] { 1.2 , double.NaN , -3.3 } );
            var value2B = new SexpArrayDouble( new[] { 1.2 , double.NaN , -3.3 } );
            var value3A = new SexpArrayDouble( 1.4 );
            var value3B = new SexpArrayDouble( 1.4 );
            var value4A = new SexpArrayDouble( new[] { -8.4 } );
            var value4B = new SexpArrayDouble( -8.4 );

            // Act & Assert
            Assert.True( value1A.Equals( value1B ) );
            Assert.True( value2A.Equals( value2B ) );
            Assert.True( value3A.Equals( value3B ) );
            Assert.True( value4A.Equals( value4B ) );
        }
        public void Equals_ComparedToObjectWithSameValuesReadFromR_ReturnsFalse()
        {
            using ( var service = new Rservice() )
            {
                // Arrange
                var value1A = service.RConnection[ "matrix( c( 1.1 , 2.6 , 3.9 , -4.2 , NA , 6.3 ) , ncol = 3 , byrow = TRUE )" ];
                var value1B = new SexpArrayDouble( new[] { 1.1 , -4.2 , 2.6 , double.NaN , 3.9 , 6.3 } );

                var value2A = service.RConnection[ "c( -4.4 , -2.2 , -1 )" ];
                var value2B = new SexpArrayDouble( new[] { -4.4 , -2.2 , -1 } );

                var value3A = service.RConnection[ "-.9" ];
                var value3B = new SexpArrayDouble( -.9 );

                var value4A = service.RConnection[ "numeric()" ];
                var value4B = new SexpArrayDouble();

                // Act & Assert
                Assert.True( value1A.Equals( value1B ) );
                Assert.True( value1B.Equals( value1A ) );
                Assert.True( value2A.Equals( value2B ) );
                Assert.True( value2B.Equals( value2A ) );
                Assert.True( value3A.Equals( value3B ) );
                Assert.True( value3B.Equals( value3A ) );
                Assert.True( value4A.Equals( value4B ) );
                Assert.True( value4B.Equals( value4A ) );
            }
        }
        public void Equals_ComparedToObjectWithDifferentValues_ReturnsFalse()
        {
            // Arrange
            var value1 = new SexpArrayDouble();
            var value2 = new SexpArrayDouble( -7.7 );
            var value3 = new SexpArrayDouble( new[] { -1.2 , -6.4 , -3.3 } );
            var value4 = new SexpArrayDouble( new[] { 1.2 , double.NaN , -3.3 } );

            // Act & Assert
            Assert.False( value1.Equals( value2 ) );
            Assert.False( value1.Equals( value3 ) );
            Assert.False( value1.Equals( value4 ) );
            Assert.False( value2.Equals( value1 ) );
            Assert.False( value2.Equals( value3 ) );
            Assert.False( value2.Equals( value4 ) );
            Assert.False( value3.Equals( value1 ) );
            Assert.False( value3.Equals( value2 ) );
            Assert.False( value3.Equals( value4 ) );
            Assert.False( value4.Equals( value1 ) );
            Assert.False( value4.Equals( value2 ) );
            Assert.False( value4.Equals( value3 ) );
        }
        public void Equals_ComparedToObjectOfDifferentType_ReturnsFalse()
        {
            // Arrange
            var value1 = new SexpArrayDouble( new[] { 2.3 , double.NaN , 4 } );
            var value2 = new SexpArrayBool( true );
            var value3 = new SexpArrayInt( new[] { 1 , 3 } );

            // Act & Assert

            // ReSharper disable RedundantCast
            Assert.False( value1.Equals( value2 ) );
            Assert.False( value1.Equals( ( object )value2 ) );
            Assert.False( value1.Equals( value3 ) );
            Assert.False( value1.Equals( ( object )value3 ) );
            // ReSharper restore RedundantCast
        }
        public void Equals_ComparedToNull_ReturnsFalse()
        {
            // Arrange
            var value1 = new SexpArrayDouble();
            var value2 = new SexpArrayDouble( new[] { 2.3 , double.NaN , 4 } );
            var value3 = new SexpArrayDouble( 6.5 );

            // Act & Assert

            // ReSharper disable RedundantCast
            Assert.False( value1.Equals( ( SexpArrayDouble )null ) );
            Assert.False( value1.Equals( ( object )null ) );
            Assert.False( value2.Equals( ( SexpArrayDouble )null ) );
            Assert.False( value2.Equals( ( object )null ) );
            Assert.False( value3.Equals( ( SexpArrayDouble )null ) );
            Assert.False( value3.Equals( ( object )null ) );
            // ReSharper restore RedundantCast
        }
        public void AsDoubles_SexpConstructedUsingConstructorOrMake_ReturnsSameSetOfDoubles()
        {
            // Arrange
            var values1 = new double[ 1 , 1 ] { { 2 } };
            var values2 = new double[ 3 , 4 ] { { 8 , 2 , 7 , 4 } , { 0 , double.NaN , 5 , -2 } , { 1 , -4 , -3 , -8 } };
            const double values3 = -5d;
            var values4 = new List<double> { 4 , 5 , 6 };

            // Act
            Sexp sexp1 = Sexp.Make( values1 );
            Sexp sexp2 = Sexp.Make( values2 );
            Sexp sexp3 = new SexpArrayDouble( values3 );
            Sexp sexp4 = new SexpArrayDouble( values4 );
            Sexp sexp5 = new SexpArrayDouble();

            // Assert
            Assert.Equal( new double[] { 2 } , sexp1.AsDoubles );
            Assert.Equal( new[] { 8 , 0 , 1 , 2 , double.NaN , -4 , 7 , 5 , -3 , 4 , -2 , -8 } , sexp2.AsDoubles );
            Assert.Equal( new double[] { -5 } , sexp3.AsDoubles );
            Assert.Equal( new double[] { 4 , 5 , 6 } , sexp4.AsDoubles );
            Assert.Equal( new double[] { } , sexp5.AsDoubles );
        }
        public void Various_DoubleTest()
        {
            // note: this test was ported from RserveCLI.  Not in the typical Arrange/Act/Assert format
            var zero = new SexpArrayDouble( 0.0 );
            var one = new SexpArrayDouble( 1.0 );
            var na = new SexpArrayDouble( SexpArrayDouble.Na );

            // ReSharper disable EqualExpressionComparison
            Assert.True( zero.Equals( zero ) );
            Assert.True( one.Equals( one ) );
            Assert.True( na.Equals( na ) );

            // ReSharper restore EqualExpressionComparison
            Assert.True( !zero.Equals( one ) );
            Assert.True( !zero.Equals( na ) );
            Assert.True( !one.Equals( na ) );
            Assert.True( zero.Equals( 0 ) );
            Assert.True( one.Equals( 1 ) );
            Assert.True( na.IsNa );
            Assert.True( zero.AsDouble == 0.0 );
            Assert.True( one.AsDouble == 1.0 );
            Assert.True( zero.AsInt == 0 );
            Assert.True( one.AsInt == 1 );
            Assert.True( double.IsNaN( na.AsDouble ) );

            foreach ( var a in new Sexp[] { zero , one , na } )
            {
                Assert.True( !a.Equals( new SexpNull() ) );
            }
        }
        public void IsNa_NotNa_ReturnFalse()
        {
            // Arrange
            var sexp1 = new SexpArrayDouble( 3.4 );
            var sexp2 = new SexpArrayDouble( new[] { -8.3 } );

            // Act & Assert
            Assert.False( sexp1.IsNa );
            Assert.False( sexp2.IsNa );
        }
        public void IsNa_SexpContainsZeroOrMultipleValues_ThrowsNotSupportedException()
        {
            // Arrange
            var sexp1 = new SexpArrayDouble();
            var sexp2 = new SexpArrayDouble( new double[] { } );
            var sexp3 = new SexpArrayDouble( new[] { double.NaN , 4.4 } );
            var sexp4 = new SexpArrayDouble( new[] { 4.4 , -9.4 } );

            // Act & Assert
            Assert.Throws<NotSupportedException>( () => sexp1.IsNa );
            Assert.Throws<NotSupportedException>( () => sexp2.IsNa );
            Assert.Throws<NotSupportedException>( () => sexp3.IsNa );
            Assert.Throws<NotSupportedException>( () => sexp4.IsNa );
        }
        public void Equals_ComparedToObjectOfDifferentTypeThatCanBeCoercedIntoArrayDouble_ReturnsTrue()
        {
            // Arrange
            var value1 = new SexpArrayDouble( new[] { 4d , -2d , -3d } );
            var value2 = new List<double> { 4 , -2 , -3 };
            var value3 = new int[] { 4 , -2 , -3 };
            var value4 = new SexpArrayInt( new int[] { 4 , -2 , -3 } );

            // Act & Assert

            // ReSharper disable RedundantCast
            Assert.True( value1.Equals( value2 ) );
            Assert.True( value1.Equals( ( object )value2 ) );

            Assert.True( value1.Equals( value3 ) );
            Assert.True( value1.Equals( ( object )value3 ) );

            Assert.True( value1.Equals( value4 ) );
            Assert.True( value1.Equals( ( object )value4 ) );
            // ReSharper restore RedundantCast
        }
Beispiel #26
0
        public void ColNamesSet_SexpDoesNotHaveDimAttribute_ThrowsNotSupportedException()
        {
            using ( var service = new Rservice() )
            {

                // Arrange
                Sexp test1 = new SexpArrayDouble();
                Sexp test2 = service.RConnection[ "c( 1 , 2 , 3 )" ];

                // Act & Assert
                Assert.Throws<NotSupportedException>( () => test1.ColNames = new[] { "RowA" } );
                Assert.Throws<NotSupportedException>( () => test2.ColNames = new[] { "RowA" } );
            }
        }
        public void Equals_ComparedToObjectOfDifferentTypeThatCanBeCoercedIntoArrayInt_ReturnsTrue()
        {
            // Arrange
            var value1 = new SexpArrayInt( new[] { 2 , -5 , SexpArrayInt.Na } );
            var value2 = new double[] { 2.0d , -5.0d , Convert.ToDouble( SexpArrayInt.Na ) };
            var value3 = new List<int> { 2 , -5 , SexpArrayInt.Na };
            var value4 = new SexpArrayDouble( new List<double> { 2 , -5 , SexpArrayInt.Na } );

            // Act & Assert

            // ReSharper disable RedundantCast
            Assert.True( value1.Equals( value2 ) );
            Assert.True( value1.Equals( ( object )value2 ) );

            Assert.True( value1.Equals( value3 ) );
            Assert.True( value1.Equals( ( object )value3 ) );

            Assert.True( value1.Equals( value4 ) );
            Assert.True( value1.Equals( ( object )value4 ) );
            // ReSharper restore RedundantCast
        }