Skip to content

Commit cf213f7

Browse files
committed
Fix fkae schema's creation and add a test
1 parent 0c385ee commit cf213f7

File tree

3 files changed

+60
-3
lines changed

3 files changed

+60
-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
}
+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Text;
4+
using Microsoft.Data.DataView;
5+
using Microsoft.ML.Core.Data;
6+
using Microsoft.ML.Data;
7+
using Microsoft.ML.Data.DataLoadSave;
8+
using Microsoft.ML.TestFramework;
9+
using Xunit;
10+
using Xunit.Abstractions;
11+
12+
namespace Microsoft.ML.Tests
13+
{
14+
public class FakeSchemaTest : BaseTestClass
15+
{
16+
public FakeSchemaTest(ITestOutputHelper output)
17+
: base(output)
18+
{
19+
}
20+
21+
[Fact]
22+
void SimpleTest()
23+
{
24+
var metadataBuilder = new MetadataBuilder();
25+
metadataBuilder.Add("M", NumberType.R4, (ref float v) => v = 484f);
26+
var schemaBuilder = new SchemaBuilder();
27+
schemaBuilder.AddColumn("A", new VectorType(NumberType.R4, 94));
28+
schemaBuilder.AddColumn("B", new KeyType(typeof(uint), 17));
29+
schemaBuilder.AddColumn("C", NumberType.I4, metadataBuilder.GetMetadata());
30+
31+
var shape = SchemaShape.Create(schemaBuilder.GetSchema());
32+
33+
var fakeSchema = FakeSchemaFactory.Create(shape);
34+
35+
var columnA = fakeSchema[0];
36+
var columnB = fakeSchema[1];
37+
var columnC = fakeSchema[2];
38+
39+
Assert.Equal("A", columnA.Name);
40+
Assert.Equal(NumberType.R4, columnA.Type.GetItemType());
41+
Assert.Equal(10, columnA.Type.GetValueCount());
42+
43+
Assert.Equal("B", columnB.Name);
44+
Assert.Equal(DataKind.U4, columnB.Type.GetRawKind());
45+
Assert.Equal(10u, columnB.Type.GetKeyCount());
46+
47+
Assert.Equal("C", columnC.Name);
48+
Assert.Equal(NumberType.I4, columnC.Type);
49+
50+
var metaC = columnC.Metadata;
51+
Assert.Single(metaC.Schema);
52+
53+
float mValue = -1;
54+
metaC.GetValue("M", ref mValue);
55+
Assert.Equal(default, mValue);
56+
}
57+
}
58+
}

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)