BotSharp/BotSharp.NLP.UnitTest/SVM/IOTests.cs

77 lines
2.5 KiB
C#

using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using SVM;
using System.Linq;
using System.IO;
using System.Text;
using SVM.BotSharp.MachineLearning;
using SVM.BotSharp.MachineLearningTest;
namespace BotSharp.NLP.UnitTest.SVM
{
[TestClass]
public class IOTests
{
[TestMethod]
public void ReadProblem()
{
Problem expected = SVMUtilities.CreateTwoClassProblem(100);
Problem actual = Problem.Read("train0.problem");
Assert.AreEqual(expected, actual);
}
[TestMethod]
public void WriteProblem()
{
Problem prob = SVMUtilities.CreateTwoClassProblem(100);
using (MemoryStream stream = new MemoryStream())
using (StreamReader input = new StreamReader("train0.problem"))
{
Problem.Write(stream, prob);
string expected = input.ReadToEnd().Replace("\r\n", "\n");
string actual = Encoding.ASCII.GetString(stream.ToArray());
Assert.AreEqual(expected, actual);
}
}
[TestMethod]
public void ReadModel()
{
Problem train = SVMUtilities.CreateTwoClassProblem(100);
Parameter param = new Parameter();
RangeTransform transform = RangeTransform.Compute(train);
Problem scaled = transform.Scale(train);
param.KernelType = KernelType.LINEAR;
Training.SetRandomSeed(SVMUtilities.TRAINING_SEED);
Model expected = Training.Train(scaled, param);
Model actual = Model.Read("svm0.model");
Assert.AreEqual(expected, actual);
}
[TestMethod]
public void WriteModel()
{
Problem train = SVMUtilities.CreateTwoClassProblem(100);
Parameter param = new Parameter();
RangeTransform transform = RangeTransform.Compute(train);
Problem scaled = transform.Scale(train);
param.KernelType = KernelType.LINEAR;
Training.SetRandomSeed(SVMUtilities.TRAINING_SEED);
Model model = Training.Train(scaled, param);
using (MemoryStream stream = new MemoryStream())
using (StreamReader input = new StreamReader("svm0.model"))
{
Model.Write(stream, model);
string expected = input.ReadToEnd().Replace("\r\n", "\n");
string actual = Encoding.ASCII.GetString(stream.ToArray());
Assert.AreEqual(expected, actual);
}
}
}
}