Skip to content

Commit 6783a61

Browse files
authored
Fix fake schema's creation and add a test (#2331)
1 parent 8eb1dab commit 6783a61

File tree

3 files changed

+61
-3
lines changed

3 files changed

+61
-3
lines changed

src/Microsoft.ML.Data/DataLoadSave/FakeSchema.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -29,15 +29,15 @@ public static Schema Create(SchemaShape shape)
2929
var partialMetadata = shape[i].Metadata;
3030
for (int j = 0; j < partialMetadata.Count; ++j)
3131
{
32-
var metaColumnType = MakeColumnType(partialMetadata[i]);
32+
var metaColumnType = MakeColumnType(partialMetadata[j]);
3333
Delegate del;
3434
if (metaColumnType is VectorType vectorType)
3535
del = Utils.MarshalInvoke(GetDefaultVectorGetter<int>, vectorType.ItemType.RawType);
3636
else
3737
del = Utils.MarshalInvoke(GetDefaultGetter<int>, metaColumnType.RawType);
3838
metaBuilder.Add(partialMetadata[j].Name, metaColumnType, del);
3939
}
40-
builder.AddColumn(shape[i].Name, MakeColumnType(shape[i]));
40+
builder.AddColumn(shape[i].Name, MakeColumnType(shape[i]), metaBuilder.GetMetadata());
4141
}
4242
return builder.GetSchema();
4343
}
+59
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
// Licensed to the .NET Foundation under one or more agreements.
2+
// The .NET Foundation licenses this file to you under the MIT license.
3+
// See the LICENSE file in the project root for more information.
4+
5+
using Microsoft.Data.DataView;
6+
using Microsoft.ML.Core.Data;
7+
using Microsoft.ML.Data;
8+
using Microsoft.ML.Data.DataLoadSave;
9+
using Microsoft.ML.TestFramework;
10+
using Xunit;
11+
using Xunit.Abstractions;
12+
13+
namespace Microsoft.ML.Tests
14+
{
15+
public class FakeSchemaTest : BaseTestClass
16+
{
17+
public FakeSchemaTest(ITestOutputHelper output)
18+
: base(output)
19+
{
20+
}
21+
22+
[Fact]
23+
void SimpleTest()
24+
{
25+
var metadataBuilder = new MetadataBuilder();
26+
metadataBuilder.Add("M", NumberType.R4, (ref float v) => v = 484f);
27+
var schemaBuilder = new SchemaBuilder();
28+
schemaBuilder.AddColumn("A", new VectorType(NumberType.R4, 94));
29+
schemaBuilder.AddColumn("B", new KeyType(typeof(uint), 17));
30+
schemaBuilder.AddColumn("C", NumberType.I4, metadataBuilder.GetMetadata());
31+
32+
var shape = SchemaShape.Create(schemaBuilder.GetSchema());
33+
34+
var fakeSchema = FakeSchemaFactory.Create(shape);
35+
36+
var columnA = fakeSchema[0];
37+
var columnB = fakeSchema[1];
38+
var columnC = fakeSchema[2];
39+
40+
Assert.Equal("A", columnA.Name);
41+
Assert.Equal(NumberType.R4, columnA.Type.GetItemType());
42+
Assert.Equal(10, columnA.Type.GetValueCount());
43+
44+
Assert.Equal("B", columnB.Name);
45+
Assert.Equal(DataKind.U4, columnB.Type.GetRawKind());
46+
Assert.Equal(10u, columnB.Type.GetKeyCount());
47+
48+
Assert.Equal("C", columnC.Name);
49+
Assert.Equal(NumberType.I4, columnC.Type);
50+
51+
var metaC = columnC.Metadata;
52+
Assert.Single(metaC.Schema);
53+
54+
float mValue = -1;
55+
metaC.GetValue("M", ref mValue);
56+
Assert.Equal(default, mValue);
57+
}
58+
}
59+
}

test/Microsoft.ML.Tests/TextLoaderTests.cs

-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
using Microsoft.ML.Model;
1212
using Microsoft.ML.RunTests;
1313
using Microsoft.ML.TestFramework;
14-
using Microsoft.ML.Transforms.Conversions;
1514
using Newtonsoft.Json.Linq;
1615
using Xunit;
1716
using Xunit.Abstractions;

0 commit comments

Comments
 (0)