public void Visit(Decimal128Type type)
            {
                Decimal128Array.Builder resultBuilder = new Decimal128Array.Builder(type).Reserve(_baseDataTotalElementCount);

                for (int i = 0; i < _baseDataListCount; i++)
                {
                    List <int?>             dataList = _baseData[i];
                    Decimal128Array.Builder builder  = new Decimal128Array.Builder(type).Reserve(dataList.Count);
                    foreach (decimal?value in dataList)
                    {
                        if (value.HasValue)
                        {
                            builder.Append(value.Value);
                            resultBuilder.Append(value.Value);
                        }
                        else
                        {
                            builder.AppendNull();
                            resultBuilder.AppendNull();
                        }
                    }
                    TestTargetArrayList.Add(builder.Build());
                }

                ExpectedArray = resultBuilder.Build();
            }
                public void AppendDecimal(int count)
                {
                    // Arrange
                    var builder = new Decimal128Array.Builder(new Decimal128Type(14, 10));

                    // Act
                    decimal?[] testData = new decimal?[count];
                    for (int i = 0; i < count; i++)
                    {
                        if (i == count - 2)
                        {
                            builder.AppendNull();
                            testData[i] = null;
                            continue;
                        }
                        decimal rnd = i * (decimal)Math.Round(new Random().NextDouble(), 10);
                        testData[i] = rnd;
                        builder.Append(rnd);
                    }

                    // Assert
                    var array = builder.Build();

                    Assert.Equal(count, array.Length);
                    for (int i = 0; i < count; i++)
                    {
                        Assert.Equal(testData[i], array.GetValue(i));
                    }
                }
Exemple #3
0
            public void Visit(Decimal128Type type)
            {
                var builder = new Decimal128Array.Builder(type).Reserve(Length);

                for (var i = 0; i < Length; i++)
                {
                    builder.Append((decimal)i / Length);
                }

                Array = builder.Build();
            }
                public void AppendInvalidPrecisionAndScaleDecimal()
                {
                    // Arrange
                    var builder = new Decimal128Array.Builder(new Decimal128Type(2, 1));

                    // Assert
                    Assert.Throws <OverflowException>(() => builder.Append(100));
                    Assert.Throws <OverflowException>(() => builder.Append(0.01M));
                    builder.Append(-9.9M);
                    builder.Append(0);
                    builder.Append(9.9M);
                }
                public void SetNull()
                {
                    // Arrange
                    var builder = new Decimal128Array.Builder(new Decimal128Type(24, 8))
                                  .Resize(1);

                    // Act
                    builder.Set(0, 50.123456M);
                    builder.SetNull(0);

                    // Assert
                    var array = builder.Build();

                    Assert.Null(array.GetValue(0));
                }
                public void AppendClearAppendDecimal()
                {
                    // Arrange
                    var builder = new Decimal128Array.Builder(new Decimal128Type(24, 8));

                    // Act
                    builder.Append(1);
                    builder.Clear();
                    builder.Append(10);

                    // Assert
                    var array = builder.Build();

                    Assert.Equal(10, array.GetValue(0));
                }
            public void HasExpectedResultOrThrows(decimal d, int precision, int scale, bool shouldThrow)
            {
                var builder = new Decimal128Array.Builder(new Decimal128Type(precision, scale));

                if (shouldThrow)
                {
                    Assert.Throws <OverflowException>(() => builder.Append(d));
                }
                else
                {
                    builder.Append(d);
                    var result = builder.Build(new TestMemoryAllocator());
                    Assert.Equal(d, result.GetValue(0));
                }
            }
                public void AppendLargeDecimal()
                {
                    // Arrange
                    var     builder = new Decimal128Array.Builder(new Decimal128Type(26, 2));
                    decimal large   = 999999999999909999999999.80M;

                    // Act
                    builder.Append(large);
                    builder.Append(-large);

                    // Assert
                    var array = builder.Build();

                    Assert.Equal(large, array.GetValue(0));
                    Assert.Equal(-large, array.GetValue(1));
                }
                public void SwapNull()
                {
                    // Arrange
                    var builder = new Decimal128Array.Builder(new Decimal128Type(24, 8));

                    // Act
                    builder.Append(123.456M);
                    builder.AppendNull();
                    builder.Swap(0, 1);

                    // Assert
                    var array = builder.Build();

                    Assert.Null(array.GetValue(0));
                    Assert.Equal(123.456M, array.GetValue(1));
                }
                public void AppendFractionalDecimal()
                {
                    // Arrange
                    var     builder  = new Decimal128Array.Builder(new Decimal128Type(26, 20));
                    decimal fraction = 0.99999999999990999992M;

                    // Act
                    builder.Append(fraction);
                    builder.Append(-fraction);

                    // Assert
                    var array = builder.Build();

                    Assert.Equal(fraction, array.GetValue(0));
                    Assert.Equal(-fraction, array.GetValue(1));
                }
                public void AppendThenGetGivesNull()
                {
                    // Arrange
                    var builder = new Decimal128Array.Builder(new Decimal128Type(8, 2));

                    // Act

                    builder = builder.AppendNull();
                    builder = builder.AppendNull();
                    builder = builder.AppendNull();
                    // Assert
                    var array = builder.Build();

                    Assert.Equal(3, array.Length);
                    Assert.Equal(array.Data.Buffers[1].Length, array.ByteWidth * 3);
                    Assert.Null(array.GetValue(0));
                    Assert.Null(array.GetValue(1));
                    Assert.Null(array.GetValue(2));
                }
                public void AppendRangeDecimal()
                {
                    // Arrange
                    var builder = new Decimal128Array.Builder(new Decimal128Type(24, 8));
                    var range   = new decimal[] { 2.123M, 1.5984M, -0.0000001M, 9878987987987987.1235407M };

                    // Act
                    builder.AppendRange(range);
                    builder.AppendNull();

                    // Assert
                    var array = builder.Build();

                    for (int i = 0; i < range.Length; i++)
                    {
                        Assert.Equal(range[i], array.GetValue(i));
                    }

                    Assert.Null(array.GetValue(range.Length));
                }
Exemple #13
0
 public void NewBatch()
 {
     _builder = new Decimal128Array.Builder(_type);
 }