comparison UnitTests/CS/Common/OperatorTest.cs @ 0:f990fcb411a9

Копия текущей версии из github
author cin
date Thu, 27 Mar 2014 21:46:09 +0400
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:f990fcb411a9
1 using System;
2 #if ORACLE
3 using Oracle.DataAccess.Types;
4 #endif
5 using NUnit.Framework;
6
7 using BLToolkit.Common;
8
9 namespace Common
10 {
11 [TestFixture]
12 public class OperatorTest
13 {
14 [Test]
15 public void StringTest()
16 {
17 Assert.AreEqual("123456", Operator<string>.Addition("123", "456"));
18
19 Assert.IsTrue(Operator<string>.Equality("123", "123"));
20 }
21
22 [Test]
23 public void IntTest()
24 {
25 Assert.AreEqual(579, Operator<int>.Addition (123, 456));
26 Assert.AreEqual(-333, Operator<int>.Subtraction(123, 456));
27
28 Assert.AreEqual(56088, Operator<int>.Multiply(123, 456));
29 Assert.AreEqual(0, Operator<int>.Division(123, 456));
30 Assert.AreEqual(123, Operator<int>.Modulus (123, 456));
31
32
33 Assert.AreEqual(72, Operator<int>.BitwiseAnd (123, 456));
34 Assert.AreEqual(507, Operator<int>.BitwiseOr (123, 456));
35 Assert.AreEqual(435, Operator<int>.ExclusiveOr(123, 456));
36
37 Assert.AreEqual(-123, Operator<int>.UnaryNegation (123));
38 Assert.AreEqual(-124, Operator<int>.OnesComplement(123));
39
40 Assert.IsTrue(Operator<int>.Equality (123, 123));
41 Assert.IsTrue(Operator<int>.Inequality (123, 456));
42 Assert.IsTrue(Operator<int>.GreaterThan (123, -56));
43 Assert.IsTrue(Operator<int>.GreaterThanOrEqual(123, 123));
44 Assert.IsTrue(Operator<int>.LessThan (123, 456));
45 Assert.IsTrue(Operator<int>.LessThanOrEqual (-23, 123));
46 }
47
48 #if ORACLE
49 private class OracleDecimalOp : IOperable<OracleDecimal>
50 {
51 public OracleDecimal Addition (OracleDecimal op1, OracleDecimal op2) { return (op1 + op2); }
52 public OracleDecimal Subtraction (OracleDecimal op1, OracleDecimal op2) { return (op1 - op2); }
53 public OracleDecimal Multiply (OracleDecimal op1, OracleDecimal op2) { return (op1 * op2); }
54 public OracleDecimal Division (OracleDecimal op1, OracleDecimal op2) { return (op1 / op2); }
55 public OracleDecimal Modulus (OracleDecimal op1, OracleDecimal op2) { return (op1 % op2); }
56
57 public OracleDecimal BitwiseAnd (OracleDecimal op1, OracleDecimal op2) { throw new InvalidOperationException(); }
58 public OracleDecimal BitwiseOr (OracleDecimal op1, OracleDecimal op2) { throw new InvalidOperationException(); }
59 public OracleDecimal ExclusiveOr (OracleDecimal op1, OracleDecimal op2) { throw new InvalidOperationException(); }
60
61 public OracleDecimal UnaryNegation (OracleDecimal op) { return (-op); }
62 public OracleDecimal OnesComplement (OracleDecimal op) { throw new InvalidOperationException(); }
63
64 public bool Equality (OracleDecimal op1, OracleDecimal op2) { return op1 == op2; }
65 public bool Inequality (OracleDecimal op1, OracleDecimal op2) { return op1 != op2; }
66 public bool GreaterThan (OracleDecimal op1, OracleDecimal op2) { return op1 > op2; }
67 public bool GreaterThanOrEqual(OracleDecimal op1, OracleDecimal op2) { return op1 >= op2; }
68 public bool LessThan (OracleDecimal op1, OracleDecimal op2) { return op1 < op2; }
69 public bool LessThanOrEqual (OracleDecimal op1, OracleDecimal op2) { return op1 <= op2; }
70 }
71
72 [Test]
73 public void ExtensionTest()
74 {
75 Operator<OracleDecimal>.Op = new OracleDecimalOp();
76
77 Assert.AreEqual((OracleDecimal)579, Operator<OracleDecimal>.Addition (123, 456));
78 Assert.AreEqual((OracleDecimal)(-333),Operator<OracleDecimal>.Subtraction(123, 456));
79
80 Assert.AreEqual((OracleDecimal)56088, Operator<OracleDecimal>.Multiply(123, 456));
81 Assert.AreEqual((OracleDecimal)41, Operator<OracleDecimal>.Division(123, 3));
82 Assert.AreEqual((OracleDecimal)123, Operator<OracleDecimal>.Modulus (123, 456));
83
84
85 Assert.AreEqual(-(OracleDecimal)123, Operator<OracleDecimal>.UnaryNegation (123));
86
87 Assert.IsTrue(Operator<OracleDecimal>.Equality (123, 123));
88 Assert.IsTrue(Operator<OracleDecimal>.Inequality (123, 456));
89 Assert.IsTrue(Operator<OracleDecimal>.GreaterThan (123, (-5)));
90 Assert.IsTrue(Operator<OracleDecimal>.GreaterThanOrEqual(123, 123));
91 Assert.IsTrue(Operator<OracleDecimal>.LessThan (123, 456));
92 Assert.IsTrue(Operator<OracleDecimal>.LessThanOrEqual (123, 123));
93 }
94 #endif
95 }
96 }