using ICP.AutoMachine.AutoCheck;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using ICP.Case;
using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;
using System.Linq;
namespace Test_Method_CheckData
{
/// <summary>
///This is a test class for AutoCheckMachineTest and is intended
///to contain all AutoCheckMachineTest Unit Tests
///</summary>
[TestClass()]
public class AutoCheckMachineTest
{
private TestContext testContextInstance;
//两张表完全匹配
#region 数据流1 两张表格 Exmaple1_1
private string Exmaple1_1 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
#region 数据流2 两张表格 Exmaple1_2
private string Exmaple1_2 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
//表格数量不一样
#region 数据流1 三张表格 Exmaple2_1
private string Exmaple2_1 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table3\">"
+ "<row>"
+ "<filed name=\"商品名\" value=\"上好佳\"/>"
+ "<filed name=\"价格\" value=\"4$\"/>"
+ "<filed name=\"保质期\" value=\"一年\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"商品名\" value=\"酱油\"/>"
+ "<filed name=\"价格\" value=\"5$\"/>"
+ "<filed name=\"保质期\" value=\"三年\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"商品名\" value=\"砖头\"/>"
+ "<filed name=\"价格\" value=\"无价\"/>"
+ "<filed name=\"保质期\" value=\"永久\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
#region 数据流2 两张表格 Exmaple2_2
private string Exmaple2_2 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
//字段值不一样
#region 数据流1 Exmaple3_1
private string Exmaple3_1 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
#region 数据流2 Exmaple3_2
private string Exmaple3_2 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
//表格数量一样,其中一张列数不一样
#region 数据流1 两张表格 Exmaple4_1
private string Exmaple4_1 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
#region 数据流2 两张表格 Exmaple4_2
private string Exmaple4_2 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
//表格数量一样,其中一张行数不一样
#region 数据流1 两张表格 Exmaple5_1
private string Exmaple5_1 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
#region 数据流2 两张表格 Exmaple5_2
private string Exmaple5_2 = "<activityData>"
+ "<table name=\"table1\">"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小明\"/>"
+ "<filed name=\"学号\" value=\"01104010\"/>"
+ "<filed name=\"备注\" value=\"123\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"姓名\" value=\"小强\"/>"
+ "<filed name=\"学号\" value=\"3131123\"/>"
+ "<filed name=\"备注\" value=\"330\"/>"
+ "</row>"
+ "</table>"
+ "<table name=\"table2\">"
+ "<row>"
+ "<filed name=\"A\" value=\"3\"/>"
+ "<filed name=\"B\" value=\"4\"/>"
+ "<filed name=\"C\" value=\"5\"/>"
+ "<filed name=\"D\" value=\"6\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"5\"/>"
+ "<filed name=\"B\" value=\"6\"/>"
+ "<filed name=\"C\" value=\"7\"/>"
+ "<filed name=\"D\" value=\"8\"/>"
+ "</row>"
+ "<row>"
+ "<filed name=\"A\" value=\"9\"/>"
+ "<filed name=\"B\" value=\"10\"/>"
+ "<filed name=\"C\" value=\"11\"/>"
+ "<filed name=\"D\" value=\"12\"/>"
+ "</row>"
+ "</table>"
+ "</activityData>";
#endregion
/// <summary>
///Gets or sets the test context which provides
///information about and functionality for the current test run.
///</summary>
public TestContext TestContext
{
get
{
return testContextInstance;
}
set
{
testContextInstance = value;
}
}
#region Additional test attributes
//
//You can use the following additional attributes as you write your tests:
//
//Use ClassInitialize to run code before running the first test in the class
//[ClassInitialize()]
//public static void MyClassInitialize(TestContext testContext)
//{
//}
//
//Use ClassCleanup to run code after all tests in a class have run
//[ClassCleanup()]
//public static void MyClassCleanup()
//{
//}
//
//Use TestInitialize to run code before running each test
//[TestInitialize()]
//public void MyTestInitialize()
//{
//}
//
//Use TestCleanup to run code after each test has run
//[TestCleanup()]
//public void MyTestCleanup()
//{
//}
//
#endregion
/// <summary>
///A test for CheckData
///</summary>
[TestMethod()]
public void CheckDataTest()
{
AutoCheckMachine target = new AutoCheckMachine(); // TODO: Initialize to an appropriate value
ActivityData data1 = new ActivityData();
ActivityData data2 = new ActivityData();
ReadDataFromString(ref data1,Exmaple1_1);
ReadDataFromString(ref data2, Exmaple1_2);
List<ActivityData> datas = new List<ActivityData>(); // TODO: Initialize to an appropriate value
datas.Add(data1); datas.Add(data2);
ActivityData resultData = new ActivityData(); // TODO: Initialize to an appropriate value
ActivityData resultDataExpected = new ActivityData(); // TODO: Initialize to an appropriate value
resultDataExpected=datas[0];
target.CheckData(datas, ref resultData);
Assert.AreEqual(resultDataExpected, resultData);
//Assert.Inconclusive("A method that does not return a value cannot be verified.");
}
[TestMethod()]
public void CheckDataTest1()
{
AutoCheckMachine target = new AutoCheckMachine(); // TODO: Initialize to an appropriate value
ActivityData data1 = new ActivityData();
ActivityData data2 = new ActivityData();
ReadDataFromString(ref data1, Exmaple2_1);
ReadDataFromString(ref data2, Exmaple2_2);
List<ActivityData> datas = new List<ActivityData>(); // TODO: Initialize to an appropriate value
datas.Add(data1); datas.Add(data2);
ActivityData resultData = new ActivityData(); // TODO: Initialize to an appropriate value
ActivityData resultDataExpected = new ActivityData(); // TODO: Initialize to an appropriate value
resultDataExpected = null;
target.CheckData(datas, ref resultData);
Assert.AreEqual(resultDataExpected, resultData);
}
[TestMethod()]
public void CheckDataTest2()
{
AutoCheckMachine target = new AutoCheckMachine(); // TODO: Initialize to an appropriate value
ActivityData data1 = new ActivityData();
ActivityData data2 = new ActivityData();
ReadDataFromString(ref data1, Exmaple3_1);
ReadDataFromString(ref data2, Exmaple3_2);
List<ActivityData> datas = new List<ActivityData>(); // TODO: Initialize to an appropriate value
datas.Add(data1); datas.Add(data2);
ActivityData resultData = new ActivityData(); // TODO: Initialize to an appropriate value
ActivityData resultDataExpected = new ActivityData(); // TODO: Initialize to an appropriate value
resultDataExpected = null;
target.CheckData(datas, ref resultData);
Assert.AreEqual(resultDataExpected, resultData);
//Assert.Inconclusive("A method that does not return a value cannot be verified.");
}
[TestMethod()]
public void CheckDataTest3()
{
AutoCheckMachine target = new AutoCheckMachine(); // TODO: Initialize to an appropriate value
ActivityData data1 = new ActivityData();
ActivityData data2 = new ActivityData();
ReadDataFromString(ref data1, Exmaple4_1);
ReadDataFromString(ref data2, Exmaple4_2);
List<ActivityData> datas = new List<ActivityData>(); // TODO: Initialize to an appropriate value
datas.Add(data1); datas.Add(data2);
ActivityData resultData = new ActivityData(); // TODO: Initialize to an appropriate value
ActivityData resultDataExpected = new ActivityData(); // TODO: Initialize to an appropriate value
resultDataExpected = null;
target.CheckData(datas, ref resultData);
Assert.AreEqual(resultDataExpected, resultData);
//Assert.Inconclusive("A method that does not return a value cannot be verified.");
}
[TestMethod()]
public void CheckDataTest4()
{
AutoCheckMachine target = new AutoCheckMachine(); // TODO: Initialize to an appropriate value
ActivityData data1 = new ActivityData();
ActivityData data2 = new ActivityData();
ReadDataFromString(ref data1, Exmaple5_1);
ReadDataFromString(ref data2, Exmaple5_2);
List<ActivityData> datas = new List<ActivityData>(); // TODO: Initialize to an appropriate value
datas.Add(data1); datas.Add(data2);
ActivityData resultData = new ActivityData(); // TODO: Initialize to an appropriate value
ActivityData resultDataExpected = new ActivityData(); // TODO: Initialize to an appropriate value
resultDataExpected = null;
target.CheckData(datas, ref resultData);
Assert.AreEqual(resultDataExpected, resultData);
//Assert.Inconclusive("A method that does not return a value cannot be verified.");
}
public void ReadDataFromString(ref ActivityData data,string example)
{
XElement xFlow=XElement.Parse(example);
var tables=from tb in xFlow.Elements("table") select tb;
foreach(var ta in tables)
{
var rows=from row in ta.Elements("row") select row;
EntryTable et = new EntryTable();
et.Name = ta.FirstAttribute.Value;
foreach(var row in rows)
{
var fileds=from filed in row.Elements("filed") select filed;
EntryRow rw = new EntryRow();
foreach(var filed in fileds)
{
EntryField fd = new EntryField();
fd.Name = filed.FirstAttribute.Value;
fd.Value = filed.LastAttribute.Value;
rw.Fields.Add(fd);
}
et.Rows.Add(rw);
}
data.Tables.Add(et);
}
}
}
}