File: VBufferColumnTests.cs
Web Access
Project: src\test\Microsoft.Data.Analysis.Tests\Microsoft.Data.Analysis.Tests.csproj (Microsoft.Data.Analysis.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Microsoft.ML.Data;
using Microsoft.ML.TestFramework;
using Microsoft.ML.TestFramework.Attributes;
using Xunit;
using Xunit.Abstractions;
 
 
namespace Microsoft.Data.Analysis.Tests
{
    public class VBufferColumnTests : BaseTestClass
    {
        public VBufferColumnTests(ITestOutputHelper output) : base(output, true)
        {
        }
 
        [Fact]
        public void TestVBufferColumn_Creation()
        {
            var buffers = Enumerable.Repeat(new VBuffer<int>(5, new[] { 0, 1, 2, 3, 4 }), 10).ToArray();
            var vBufferColumn = new VBufferDataFrameColumn<int>("VBuffer", buffers);
 
            Assert.Equal(10, vBufferColumn.Length);
            Assert.Equal(5, vBufferColumn[0].GetValues().Length);
            Assert.Equal(0, vBufferColumn[0].GetValues()[0]);
        }
 
        [Fact]
        public void TestVBufferColumn_Indexer()
        {
            var buffer = new VBuffer<int>(5, new[] { 4, 3, 2, 1, 0 });
 
            var vBufferColumn = new VBufferDataFrameColumn<int>("VBuffer", 1);
            vBufferColumn[0] = buffer;
 
            Assert.Equal(1, vBufferColumn.Length);
            Assert.Equal(5, vBufferColumn[0].GetValues().Length);
            Assert.Equal(0, vBufferColumn[0].GetValues()[4]);
        }
 
        [X64Fact("32-bit doesn't allow to allocate more than 2 Gb")]
        public void TestVBufferColumn_Indexer_MoreThanMaxInt()
        {
            var originalValues = new[] { 4, 3, 2, 1, 0 };
 
            var length = VBufferDataFrameColumn<int>.MaxCapacity + 3;
 
            var vBufferColumn = new VBufferDataFrameColumn<int>("VBuffer", length);
            long index = length - 2;
 
            vBufferColumn[index] = new VBuffer<int>(5, originalValues);
 
            var values = vBufferColumn[index].GetValues();
 
            Assert.Equal(length, vBufferColumn.Length);
            Assert.Equal(5, values.Length);
 
            for (int i = 0; i < values.Length; i++)
            {
                Assert.Equal(originalValues[i], values[i]);
            }
 
            vBufferColumn = null;
        }
    }
}