using System; using System.Collections.Generic; using System.Linq; using System.Text; using NUnit.Framework; using System.IO; using System.Reflection; namespace Test { [TestFixture] public class CheckAgainstExcelFixture { static Microsoft.Office.Interop.Excel.Application objApp; static Microsoft.Office.Interop.Excel._Workbook objBook; static Microsoft.Office.Interop.Excel.Worksheet w_sheet; conductortension.Core.calStressLoadNew basicCondition; private object get_value(Microsoft.Office.Interop.Excel.Worksheet sheet, string str_rang) { return sheet.get_Range(str_rang, Missing.Value).Value2; } private void set_value(Microsoft.Office.Interop.Excel.Worksheet sheet, string str_rang, object value) { sheet.get_Range(str_rang, Missing.Value).set_Value(Missing.Value, value); } private int GenerateRandomSeed() { return (int)DateTime.Now.Ticks; } [Test] public void WindTest() { conductortension.Core.calStressLoadNew wind = basicCondition; wind.DaiWen = wind.FengWen; //double wind_velocity; //wind_velocity = Math.Round(wind.FengFeng * Math.Pow(wind.PingJunGaoDu / wind.SheJiFengSuGaoDu, 0.16), 2); wind.DaiFeng = wind.FengFeng; wind.DaiZheSuanFengSu = true; wind.DaiBing = wind.FengBing; Random ran = new Random(GenerateRandomSeed()); wind.DangJu = ran.Next(1, 800); Microsoft.Office.Interop.Excel.Range range; range = w_sheet.get_Range("B81", Missing.Value); range.set_Value(Missing.Value, wind.DangJu); double excel_value; excel_value = (double)(w_sheet.get_Range("H81", Missing.Value).Value2); double cal_value = 0; conductortension.Core.CalZhangLi(wind, ref cal_value); Assert.AreEqual(cal_value, excel_value, 1); } [Test, Combinatorial] public void WindTest_D_Variable([Values(10, 17, 18)] double d, [Values(10, 20, 21, 27, 29, 31.5, 32)] double velocity,[Values(0,3,5,8,10,13,15,18,20,23,25,27,30)] double ice)//导线外径和风速、有冰无冰测试变化测试 { //修改Eecel线径 double org_d; org_d = (double)get_value(w_sheet, "J8"); set_value(w_sheet, "J8", d); //修改风速 double org_velocity; org_velocity = (double)get_value(w_sheet, "L22"); set_value(w_sheet, "L22", velocity); //修改冰厚 double org_ice; org_ice = (double)get_value(w_sheet, "O22"); set_value(w_sheet, "O22", ice); conductortension.Core.calStressLoadNew wind = basicCondition; wind.WaiJing = d; wind.DaiWen = wind.FengWen; wind.FengFeng = velocity; wind.FengBing = ice; //double wind_velocity; //wind_velocity = Math.Round(wind.FengFeng * Math.Pow(wind.PingJunGaoDu / wind.SheJiFengSuGaoDu, 0.16), 2); wind.DaiFeng = wind.FengFeng; wind.DaiBing = wind.FengBing; wind.DaiZheSuanFengSu = true; Random ran = new Random(GenerateRandomSeed()); wind.DangJu = ran.Next(1, 800); Microsoft.Office.Interop.Excel.Range range; range = w_sheet.get_Range("B81", Missing.Value); range.set_Value(Missing.Value, wind.DangJu); double excel_value; excel_value = (double)(w_sheet.get_Range("H81", Missing.Value).Value2); double cal_value = 0; conductortension.Core.CalZhangLi(wind, ref cal_value); Assert.AreEqual(cal_value, excel_value, 1); set_value(w_sheet, "J8", org_d); set_value(w_sheet, "L22", org_velocity); set_value(w_sheet, "O22", org_ice); } [Test] public void IceTest() { conductortension.Core.calStressLoadNew ice = basicCondition; ice.DaiWen = ice.BingWen; ice.DaiFeng = ice.BingFeng; ice.DaiZheSuanFengSu = false; ice.DaiBing = ice.BingBing; Random ran = new Random(GenerateRandomSeed()); ice.DangJu = ran.Next(1, 800); Microsoft.Office.Interop.Excel.Range range; range = w_sheet.get_Range("B81", Missing.Value); range.set_Value(Missing.Value, ice.DangJu); double excel_value; excel_value = (double)(w_sheet.get_Range("J81", Missing.Value).Value2); double cal_value = 0; conductortension.Core.CalZhangLi(ice, ref cal_value); Assert.AreEqual(cal_value, excel_value, 1); } [Test] public void LowesetTemperatureTest() { conductortension.Core.calStressLoadNew loweseTemp = basicCondition; loweseTemp.DaiWen = loweseTemp.DiWen; loweseTemp.DaiFeng = loweseTemp.DiFeng; loweseTemp.DaiBing = loweseTemp.DiBing; Random ran = new Random(GenerateRandomSeed()); loweseTemp.DangJu = ran.Next(1, 800); Microsoft.Office.Interop.Excel.Range range; range = w_sheet.get_Range("B81", Missing.Value); range.set_Value(Missing.Value, loweseTemp.DangJu); double excel_value; excel_value = (double)(w_sheet.get_Range("D81", Missing.Value).Value2); double cal_value = 0; conductortension.Core.CalZhangLi(loweseTemp, ref cal_value); Assert.AreEqual(cal_value, excel_value, 1); } [Test] public void HotestTemperatureTest() { conductortension.Core.calStressLoadNew lowestTemp = basicCondition; lowestTemp.DaiWen = (double)get_value(w_sheet, "I24"); lowestTemp.DaiFeng = (double)get_value(w_sheet, "L24"); lowestTemp.DaiBing = (double)get_value(w_sheet, "O24"); Random ran = new Random(GenerateRandomSeed()); lowestTemp.DangJu = ran.Next(1, 800); Microsoft.Office.Interop.Excel.Range range; range = w_sheet.get_Range("B81", Missing.Value); range.set_Value(Missing.Value, lowestTemp.DangJu); double excel_value; excel_value = (double)(w_sheet.get_Range("L81", Missing.Value).Value2); double cal_value = 0; conductortension.Core.CalZhangLi(lowestTemp, ref cal_value); Assert.AreEqual(cal_value, excel_value, 1); } [Test] public void SoftestWindTest()//最小风 { conductortension.Core.calStressLoadNew softestWind = basicCondition; softestWind.DaiWen = (double)get_value(w_sheet, "I31"); softestWind.DaiFeng = (double)get_value(w_sheet, "L31");//这里不折算风速 softestWind.DaiZheSuanFengSu = false; softestWind.DaiBing = (double)get_value(w_sheet, "O31"); Random ran = new Random(GenerateRandomSeed()); softestWind.DangJu = ran.Next(1, 800); Microsoft.Office.Interop.Excel.Range range; range = w_sheet.get_Range("B81", Missing.Value); range.set_Value(Missing.Value, softestWind.DangJu); double excel_value; excel_value = (double)(w_sheet.get_Range("H104", Missing.Value).Value2); double cal_value = 0; conductortension.Core.CalZhangLi(softestWind, ref cal_value); Assert.AreEqual(cal_value, excel_value, 1); } [OneTimeSetUp] public void SetUp() { objApp = new Microsoft.Office.Interop.Excel.Application(); objBook = objApp.Application.Workbooks.Add(@"d:\code\conductortension\学习-张力计算(临界档距公式法V20090602)-送电室版-Unittest.xls"); w_sheet = objBook.Sheets["三维平台测试"] as Microsoft.Office.Interop.Excel.Worksheet; //objApp.Visible = true; double E; E = (double)(w_sheet.get_Range("J5", Missing.Value).Value2); double alpha;//膨胀系数 alpha = (double)(w_sheet.get_Range("J6", Missing.Value).Value2); double unit_weight;//单位长度重量 kg/km unit_weight = (double)(w_sheet.get_Range("J7", Missing.Value).Value2) * 1000; double d;//直径mm d = (double)(w_sheet.get_Range("J8", Missing.Value).Value2); double area;//截面mm2 area = (double)(w_sheet.get_Range("J9", Missing.Value).Value2); double rated_broken_tension;//N 额定拉断力 rated_broken_tension = (double)(w_sheet.get_Range("J10", Missing.Value).Value2) / .95; double F;//导线安全系数 F = (double)(w_sheet.get_Range("K11", Missing.Value).Value2); double ave_tension_percent;//% 平均运行张力百分数 ave_tension_percent = (double)(w_sheet.get_Range("K12", Missing.Value).Value2) * 100; basicCondition.MoLiang = E; basicCondition.XianPengZhang = alpha; basicCondition.ZhongLiang = unit_weight; basicCondition.WaiJing = d; basicCondition.JieMianJi = area; basicCondition.EDingLaDuanLi = rated_broken_tension; basicCondition.BaoZhengPoDuanZhangLiXiShu = 95; basicCondition.AnQuan = F; basicCondition.NianPingJunXishu = ave_tension_percent; basicCondition.SheJiFengSuGaoDu = 10; basicCondition.PingJunGaoDu = 20; //读取气象区 basicCondition.DiWen = (double)(w_sheet.get_Range("I20", Missing.Value).Value2); basicCondition.DiFeng = (double)(w_sheet.get_Range("L20", Missing.Value).Value2); basicCondition.DiBing = (double)(w_sheet.get_Range("O20", Missing.Value).Value2); basicCondition.PingWen = (double)(w_sheet.get_Range("I21", Missing.Value).Value2); basicCondition.PingFeng = (double)(w_sheet.get_Range("L21", Missing.Value).Value2); basicCondition.PingBing = (double)(w_sheet.get_Range("O21", Missing.Value).Value2); basicCondition.FengWen = (double)(w_sheet.get_Range("I22", Missing.Value).Value2); basicCondition.FengFeng = (double)(w_sheet.get_Range("L22", Missing.Value).Value2); basicCondition.FengBing = (double)(w_sheet.get_Range("O22", Missing.Value).Value2); basicCondition.BingWen = (double)(w_sheet.get_Range("I23", Missing.Value).Value2); basicCondition.BingFeng = (double)(w_sheet.get_Range("L23", Missing.Value).Value2); basicCondition.BingBing = (double)(w_sheet.get_Range("O23", Missing.Value).Value2); } [OneTimeTearDown] public void Clean() { objBook.Close(false, null, null); objApp.Application.Quit(); } } }