示例#1
0
            public void DoesNotThrowWithNullParameters()
            {
                var builder = new ArrowBuffer.Builder <int>();

                builder.AppendRange(null);
                builder.Append((Func <IEnumerable <int> >)null);
            }
示例#2
0
        private static IArrowArray ToBooleanArray(bool[] array)
        {
            byte[] rawBytes = CreateRawBytesForBoolArray(array.Length);
            for (int i = 0; i < array.Length; ++i)
            {
                // only need to set true values since rawBytes is zeroed
                // by the .NET runtime.
                if (array[i])
                {
                    BitUtility.SetBit(rawBytes, i);
                }
            }

            var builder = new ArrowBuffer.Builder <byte>(rawBytes.Length);

            builder.AppendRange(rawBytes);

            var data = new ArrayData(
                BooleanType.Default,
                array.Length,
                0,
                0,
                new[] { ArrowBuffer.Empty, builder.Build() });

            return(ArrowArrayFactory.BuildArray(data));
        }
示例#3
0
        private static Action <bool> CreateBooleanArray(
            int length,
            out Func <IArrowArray> build)
        {
            byte[] rawBytes = CreateRawBytesForBoolArray(length);
            build = () =>
            {
                var builder = new ArrowBuffer.Builder <byte>(rawBytes.Length);
                builder.AppendRange(rawBytes);

                var data = new ArrayData(
                    BooleanType.Default,
                    length,
                    0,
                    0,
                    new[] { ArrowBuffer.Empty, builder.Build() });

                return(ArrowArrayFactory.BuildArray(data));
            };

            int currentIndex = 0;

            return(item =>
            {
                // Only need to set true values since rawBytes is zeroed by the .NET runtime.
                if (item)
                {
                    BitUtility.SetBit(rawBytes, currentIndex);
                }
                ++currentIndex;
            });
        }
示例#4
0
            public void CapacityGrowsAfterAppendEnumerable()
            {
                var builder  = new ArrowBuffer.Builder <int>(1);
                var capacity = builder.Capacity;
                var data     = Enumerable.Range(0, 10).Select(x => x);

                builder.AppendRange(data);

                Assert.True(builder.Capacity > capacity);
            }
示例#5
0
            public void LengthGrowsByEnumerableCount()
            {
                var builder = new ArrowBuffer.Builder <int>(1);
                var length  = builder.Length;
                var data    = Enumerable.Range(0, 10).Select(x => x).ToArray();
                var count   = data.Length;

                builder.AppendRange(data);

                Assert.Equal(length + count, builder.Length);
            }
示例#6
0
        public static Array MakeIntArray(int length)
        {
            // The following should be improved once the ArrayBuilder PR goes in
            var intBuilder = new ArrowBuffer.Builder <int>();

            intBuilder.AppendRange(Enumerable.Range(0, length).Select(x => x));
            ArrowBuffer buffer   = intBuilder.Build();
            ArrayData   intData  = new ArrayData(Int32Type.Default, length, 0, 0, new[] { ArrowBuffer.Empty, buffer });
            Array       intArray = ArrowArrayFactory.BuildArray(intData) as Array;

            return(intArray);
        }
示例#7
0
            public void SetsAllValuesToDefault()
            {
                var builder = new ArrowBuffer.Builder <int>(1);
                var data    = Enumerable.Range(0, 10).Select(x => x).ToArray();

                builder.AppendRange(data);
                builder.Clear();

                var buffer = builder.Build();
                var zeros  = Enumerable.Range(0, 10).Select(x => 0).ToArray();
                var values = buffer.Span.CastTo <int>().Slice(0, 10).ToArray();

                Assert.True(zeros.SequenceEqual(values));
            }
示例#8
0
            public void BufferHasExpectedValues()
            {
                var builder = new ArrowBuffer.Builder <int>(1);
                var data    = Enumerable.Range(0, 10).Select(x => x).ToArray();

                builder.AppendRange(data);

                var buffer = builder.Build();
                var span   = buffer.Span.CastTo <int>();

                for (var i = 0; i < 10; i++)
                {
                    Assert.Equal(i, span[i]);
                }
            }
            public void SetsAllValuesToDefault(int sizeBeforeClear)
            {
                var builder = new ArrowBuffer.Builder <int>(1);
                var data    = Enumerable.Range(0, sizeBeforeClear).Select(x => x).ToArray();

                builder.AppendRange(data);
                builder.Clear();
                builder.Append(0);

                var buffer = builder.Build();

                // No matter the sizeBeforeClear, we only appended a single 0,
                // so the buffer length should be the smallest possible.
                Assert.Equal(64, buffer.Length);

                // check all 16 int elements are default
                var zeros  = Enumerable.Range(0, 16).Select(x => 0).ToArray();
                var values = buffer.Span.CastTo <int>().Slice(0, 16).ToArray();

                Assert.True(zeros.SequenceEqual(values));
            }
示例#10
0
        public static Array MakeArrayBuffer <T>(IArrowType dataType,
                                                int length,
                                                IEnumerable <T> data)
            where T : struct
        {
            ArrowBuffer.Builder <T> builder = new ArrowBuffer.Builder <T>();

            builder.AppendRange(data);

            ArrowBuffer buffer = builder.Build();

            ArrayData arrayData = new ArrayData(dataType,
                                                length,
                                                0,
                                                0,
                                                new[]
            {
                buffer
            });

            Array array = ArrowArrayFactory.BuildArray(arrayData) as Array;

            return(array);
        }