Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 1. 6 вар. Трофимов-2019.pdf
Скачиваний:
285
Добавлен:
19.02.2020
Размер:
175.99 Кб
Скачать

FТест анализатора БМФ многих переменных

1using static System.Math;

2using NUnit.Framework;

3

4namespace MathUtilities.Tests

5{

6

7

8

9

[TestFixture]

[TestOf(typeof(MultivariateAnalyzer))] public class MultivariateAnalyzerTest

{

10private const int V = 6;

11private static Vector vec = new Vector(1 / Sqrt(10), 3 / Sqrt(10));

12

13

14

15

16

17

18

19

20

21

22

[Test]

public void Test()

{

var ma = new MultivariateAnalyzer( Function,

new Vector(1, 1), vec

);

var alpha1 = ma.GetAsymptote().Alpha;

23

24

25

26

27

28

29

ma = new MultivariateAnalyzer( Function,

new Vector(1, 1), vec.GetOrth()

);

var alpha2 = ma.GetAsymptote().Alpha;

30

Assert.IsTrue(alpha2 > alpha1);

31

}

32

 

33

private double Function(Vector vector) =>

34

Pow(vector.Get(0), 2) - V * Sqrt(vector.Get(0) * vector.Get(1));

35

}

36

 

37[TestFixture]

38[TestOf(typeof(Vector))]

39public class VectorTest

40{

41[Test]

42[TestCase(new double[]{7.9, 9.1}, 1, 9.1)]

43public void TestGet(double[] arr, int index, double expected)

44{

45

var v = new Vector(arr);

34

46

var got = v.Get(index);

47

Assert.AreEqual(got, expected);

48

}

49

50[Test]

51[TestCase(new double[]{7, 2, 1, 9}, 4)]

52public void TestLength(double[] arr, int expected)

53{

54

var v = new Vector(arr);

55

var got = v.Length;

56

Assert.AreEqual(expected, got);

57

}

58

59[Test]

60[TestCase(new double[]{1, 1}, new double[]{1, -1})]

61[TestCase(new double[]{5, 10}, new double[]{10, -5})]

62public void TestOrth(double[] arr, double[] expected)

63{

64

var v = new Vector(arr);

65

var got = v.GetOrth();

66

for (int i = 0; i < 2; i++)

67

Assert.AreEqual(expected[i], got.Get(i));

68

}

69

 

70

71

72

73

74

75

76

77

78

79

80

[Test]

[TestCase(new double[]{1, 1})] [TestCase(new double[]{5, 10})] public void AltTestOrth(double[] arr)

{

var v = new Vector(arr); var orth = v.GetOrth(); var got = v * orth; Assert.AreEqual(0, got);

}

81[Test]

82[TestCase(new double[]{1, 2}, new double[]{5, 7}, new double[]{6, 9})]

83public void TestSum(double[] leftArray, double[] rightArray, double[]

 

,! expected)

84

{

85

var left = new Vector(leftArray);

86

var right = new Vector(rightArray);

87

var got = left + right;

88

for (int i = 0; i < got.Length; i++)

89

Assert.AreEqual(expected[i], got.Get(i));

90

}

91

 

35

92[Test]

93[TestCase(new double[]{1, 2}, new double[]{1, 2, 3})]

94public void TestSumException(double[] leftArray, double[] rightArray)

95{

96

var left = new Vector(leftArray);

97

var right = new Vector(rightArray);

98

 

99

Assert.Throws<ApplicationException>(() => { var a = left + right; });

100

}

101

102[Test]

103[TestCase(new double[]{5, 7}, new double[]{4, 5}, new double[]{1, 2})]

104public void TestMinus(double[] leftArray, double[] rightArray, double[] ,! expected)

105{

106

var left = new Vector(leftArray);

107

var right = new Vector(rightArray);

108

var got = left - right;

109

for (int i = 0; i < got.Length; i++)

110

Assert.AreEqual(expected[i], got.Get(i));

111

}

112

113[Test]

114[TestCase(new double[]{1, 2}, new double[]{1, 2, 3})]

115public void TestMinusException(double[] leftArray, double[] rightArray)

116{

117

var left = new Vector(leftArray);

118

var right = new Vector(rightArray);

119

 

120

Assert.Throws<ApplicationException>(() => { var a = left - right; });

121

}

122

123[Test]

124[TestCase(new double[]{1, 2}, new double[]{5, 7}, 19)]

125public void TestMultiplication(double[] leftArray, double[] rightArray, ,! double expected)

126{

127

var left = new Vector(leftArray);

128

var right = new Vector(rightArray);

129

var got = left * right;

130

Assert.AreEqual(expected, got);

131

}

132

133[Test]

134[TestCase(new double[]{1, 2}, new double[]{1, 2, 3})]

135public void TestMultiplicationException(double[] leftArray, double[] ,! rightArray)

36

136

137

138

139

140

141

142

{

var left = new Vector(leftArray); var right = new Vector(rightArray);

Assert.Throws<ApplicationException>(() => { var a = left * right; });

}

143[Test]

144[TestCase(2, new double[]{4, 5}, new double[]{8, 10})]

145public void TestMultiplicationWithNumber(double number, double[] arr, ,! double[] expected)

146{

147

var v = new Vector(arr);

148

var got = number * v;

149

for (int i = 0; i < got.Length; i++)

150

Assert.AreEqual(expected[i], got.Get(i));

151

}

152

153[Test]

154[TestCase(new double[]{4, 2}, new double[]{46, 50})]

155public void TestMult(double[] arr, double[] expected)

156{

157

158

159

160

161

162

163

164

165

var v = new Vector(arr);

var arr1 = new double[]{7, 12}; var arr2 = new double[]{9, 1};

var matrixArray = new double[2][]; matrixArray[0] = arr1; matrixArray[1] = arr2;

var m = new Matrix(matrixArray); var got = v * m;

166

for (int i = 0; i < 2; i++)

167

Assert.AreEqual(expected[i], got.Get(i));

168}

169}

170

171

172

173

174

175

176

[TestFixture]

[TestOf(typeof(Matrix))] public class MatrixTest

{

public Matrix matrix;

177

178

179

180

181

[SetUp]

public void Init()

{

var arr = new double[2][]; arr[0] = new double[]{1, 2};

37

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

arr[1] = new double[]{3, 4}; matrix = new Matrix(arr);

}

[Test]

public void TestGet()

{

Assert.AreEqual(1, matrix.Get(0,0)); Assert.AreEqual(2, matrix.Get(0,1)); Assert.AreEqual(3, matrix.Get(1,0)); Assert.AreEqual(4, matrix.Get(1,1));

}

[Test]

public void TestLength()

{

Assert.AreEqual(2, matrix.Length);

}

[Test]

public void TestReversed()

{

var arr = new double[2][]; arr[0] = new double[]{-2, 1};

arr[1] = new double[]{1.5, -0.5}; var expected = new Matrix(arr); var got = matrix.GetReversed();

210

for (int i =

0; i <

2; i++)

211

for (var

j = 0;

j < 2; j++)

212

Assert.AreEqual(expected.Get(i, j), got.Get(i, j));

213

}

 

 

214

 

 

 

215[Test]

216[TestCase(new double[]{4, 2}, new double[]{8, 20})]

217public void TestMultVecToMatrix(double[] vecArr, double[] expected)

218{

219

var v =

new Vector(vecArr);

220

var got

= matrix * v;

221

for (int i = 0; i < vecArr.Length; i++)

222

Assert.AreEqual(expected[i], got.Get(i));

223}

224}

225

226

227

228

[TestFixture]

[TestOf(typeof(Math))] public class MathTest

38

229{

230[Test]

231public void TestRotationMatrix()

232{

233

var arr = new double[2][];

234

arr[0] =

new

double[]{0, 1};

235

arr[1] =

new

double[]{-1, 0};

236

var expected = new Matrix(arr);

237

 

 

 

238

239

240

// PI / 2 = 90\deg

var got = Math.GetRotationMatrix(PI / 2);

241

for (int i =

0; i <

2; i++)

242

for (var

j = 0;

j < 2; j++)

243

Assert.AreEqual(expected.Get(i, j), got.Get(i, j), 1E-4);

244}

245}

246}

39