2023-10-03 21:43:15 +03:00
|
|
|
namespace RhSolutions.ML.Tests;
|
|
|
|
|
2023-12-29 11:24:23 +03:00
|
|
|
public abstract class TestBase
|
2023-10-03 21:43:15 +03:00
|
|
|
{
|
|
|
|
protected static string _appPath = Path.GetDirectoryName(Environment.GetCommandLineArgs()[0]) ?? ".";
|
|
|
|
protected static string _dataPath = Path.Combine(_appPath, "..", "..", "..", "..", "Models", "model.zip");
|
|
|
|
protected MLContext _mlContext;
|
|
|
|
protected PredictionEngine<Product, TypePrediction> _predEngine;
|
2023-12-29 00:05:17 +03:00
|
|
|
|
2023-12-29 11:24:23 +03:00
|
|
|
public TestBase()
|
2023-10-03 21:43:15 +03:00
|
|
|
{
|
|
|
|
_mlContext = new MLContext(seed: 0);
|
|
|
|
ITransformer loadedNodel = _mlContext.Model.Load(_dataPath, out var _);
|
2023-12-29 00:05:17 +03:00
|
|
|
_predEngine = _mlContext.Model.CreatePredictionEngine<Product, TypePrediction>(loadedNodel);
|
2023-10-03 21:43:15 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
public void Execute(string name, string expectedGroup)
|
|
|
|
{
|
|
|
|
Product p = new()
|
|
|
|
{
|
|
|
|
Name = name
|
|
|
|
};
|
|
|
|
var prediction = _predEngine.Predict(p);
|
|
|
|
Assert.That(prediction.Type, Is.EqualTo(expectedGroup));
|
2023-12-29 00:05:17 +03:00
|
|
|
}
|
2023-12-29 11:24:23 +03:00
|
|
|
|
|
|
|
public void Execute(Product expected)
|
|
|
|
{
|
|
|
|
Product actual = new()
|
|
|
|
{
|
|
|
|
Name = expected.Name
|
|
|
|
};
|
|
|
|
var prediction = _predEngine.Predict(actual);
|
|
|
|
Assert.That(prediction.Type, Is.EqualTo(expected.Type));
|
|
|
|
}
|
2024-01-11 17:48:01 +03:00
|
|
|
}
|