-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathProgram.cs
145 lines (130 loc) · 7.11 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
using System;
using System.Diagnostics;
namespace NumberlessNumber
{
class Program
{
static void Main(string[] args)
{
//Test ==
Debug.Assert(Number.Parse("OO") == Number.Parse("OO"));
Debug.Assert(Number.Parse("") == Number.Parse(""));
//Test !=
Debug.Assert(Number.Parse("OO") != Number.Parse("O"));
Debug.Assert(Number.Parse("") != Number.Parse("OO"));
Debug.Assert(Number.Parse("OO") != Number.Parse(""));
Debug.Assert(!(Number.Parse("") != Number.Parse("")));
//Test >
Debug.Assert(Number.Parse("O") > Number.Parse(""));
Debug.Assert(Number.Parse("OO") > Number.Parse(""));
Debug.Assert(Number.Parse("") > Number.Parse("X"));
Debug.Assert(Number.Parse("") > Number.Parse("XX"));
//Test <
Debug.Assert(Number.Parse("") < Number.Parse("O"));
Debug.Assert(Number.Parse("") < Number.Parse("OO"));
Debug.Assert(Number.Parse("X") < Number.Parse(""));
Debug.Assert(Number.Parse("XX") < Number.Parse(""));
//Test >=
Debug.Assert(Number.Parse("O") >= Number.Parse(""));
Debug.Assert(Number.Parse("OO") >= Number.Parse(""));
Debug.Assert(Number.Parse("") >= Number.Parse("X"));
Debug.Assert(Number.Parse("") >= Number.Parse("XX"));
Debug.Assert(Number.Parse("") >= Number.Parse(""));
Debug.Assert(Number.Parse("X") >= Number.Parse("X"));
Debug.Assert(Number.Parse("O") >= Number.Parse("O"));
//Test <=
Debug.Assert(Number.Parse("") <= Number.Parse("O"));
Debug.Assert(Number.Parse("") <= Number.Parse("OO"));
Debug.Assert(Number.Parse("X") <= Number.Parse(""));
Debug.Assert(Number.Parse("XX") <= Number.Parse(""));
Debug.Assert(Number.Parse("") <= Number.Parse(""));
Debug.Assert(Number.Parse("X") <= Number.Parse("X"));
Debug.Assert(Number.Parse("O") <= Number.Parse("O"));
//Test ++
var x = Number.Parse("");
x++;
Debug.Assert(x == Number.Parse("O"));
x = Number.Parse("O");
x++;
Debug.Assert(x == Number.Parse("OO"));
x = Number.Parse("X");
x++;
Debug.Assert(x == Number.Parse(""));
//Test --
x = Number.Parse("");
x--;
Debug.Assert(x == Number.Parse("X"));
x = Number.Parse("X");
x--;
Debug.Assert(x == Number.Parse("XX"));
x = Number.Parse("O");
x--;
Debug.Assert(x == Number.Parse(""));
//Test - (Unary: negation)
Debug.Assert(-Number.Parse("OO") == Number.Parse("XX"));
Debug.Assert(-Number.Parse("XX") == Number.Parse("OO"));
Debug.Assert(-Number.Parse("") == Number.Parse(""));
//Test +
Debug.Assert(Number.Parse("O") + Number.Parse("O") == Number.Parse("OO"));
Debug.Assert(Number.Parse("O") + Number.Parse("") == Number.Parse("O"));
Debug.Assert(Number.Parse("") + Number.Parse("O") == Number.Parse("O"));
Debug.Assert(Number.Parse("X") + Number.Parse("O") == Number.Parse(""));
Debug.Assert(Number.Parse("O") + Number.Parse("X") == Number.Parse(""));
Debug.Assert(Number.Parse("") + Number.Parse("") == Number.Parse(""));
//Test - (Binary: subtraction)
Debug.Assert(Number.Parse("O") - Number.Parse("O") == Number.Parse(""));
Debug.Assert(Number.Parse("O") - Number.Parse("") == Number.Parse("O"));
Debug.Assert(Number.Parse("") - Number.Parse("O") == Number.Parse("X"));
Debug.Assert(Number.Parse("X") - Number.Parse("O") == Number.Parse("XX"));
Debug.Assert(Number.Parse("O") - Number.Parse("X") == Number.Parse("OO"));
Debug.Assert(Number.Parse("") - Number.Parse("") == Number.Parse(""));
//Test *
Debug.Assert(Number.Parse("OO") * Number.Parse("OOO") == Number.Parse("OOOOOO"));
Debug.Assert(Number.Parse("") * Number.Parse("O") == Number.Parse(""));
Debug.Assert(Number.Parse("O") * Number.Parse("") == Number.Parse(""));
Debug.Assert(Number.Parse("XX") * Number.Parse("OOO") == Number.Parse("XXXXXX"));
Debug.Assert(Number.Parse("OO") * Number.Parse("XXX") == Number.Parse("XXXXXX"));
Debug.Assert(Number.Parse("XX") * Number.Parse("XXX") == Number.Parse("OOOOOO"));
//Test /
Debug.Assert(Number.Parse("O") / Number.Parse("O") == Number.Parse("O"));
Debug.Assert(Number.Parse("OOOOOO") / Number.Parse("OO") == Number.Parse("OOO"));
Debug.Assert(Number.Parse("OOOOO") / Number.Parse("OO") == Number.Parse("OO"));
Debug.Assert(Number.Parse("XXXXXX") / Number.Parse("OO") == Number.Parse("XXX"));
Debug.Assert(Number.Parse("XXXXX") / Number.Parse("OO") == Number.Parse("XX"));
Debug.Assert(Number.Parse("OOOOOO") / Number.Parse("XX") == Number.Parse("XXX"));
Debug.Assert(Number.Parse("OOOOO") / Number.Parse("XX") == Number.Parse("XX"));
Debug.Assert(Number.Parse("XXXXXX") / Number.Parse("XX") == Number.Parse("OOO"));
Debug.Assert(Number.Parse("XXXXX") / Number.Parse("XX") == Number.Parse("OO"));
Debug.Assert(Number.Parse("") / Number.Parse("O") == Number.Parse(""));
bool argumentOutOfRangeExceptionThrown = false;
try
{
var temp = Number.Parse("O") / Number.Parse("");
} catch(ArgumentOutOfRangeException)
{
argumentOutOfRangeExceptionThrown = true;
}
Debug.Assert(argumentOutOfRangeExceptionThrown);
//Test %
Debug.Assert(Number.Parse("O") % Number.Parse("O") == Number.Parse(""));
Debug.Assert(Number.Parse("OOOOOO") % Number.Parse("OOO") == Number.Parse(""));
Debug.Assert(Number.Parse("OOOOO") % Number.Parse("OOO") == Number.Parse("OO"));
Debug.Assert(Number.Parse("XXXXXX") % Number.Parse("OOO") == Number.Parse(""));
Debug.Assert(Number.Parse("XXXXX") % Number.Parse("OOO") == Number.Parse("XX"));
Debug.Assert(Number.Parse("OOOOOO") % Number.Parse("XXX") == Number.Parse(""));
Debug.Assert(Number.Parse("OOOOO") % Number.Parse("XXX") == Number.Parse("XX"));
Debug.Assert(Number.Parse("XXXXXX") % Number.Parse("XXX") == Number.Parse(""));
Debug.Assert(Number.Parse("XXXXX") % Number.Parse("XXX") == Number.Parse("OO"));
Debug.Assert(Number.Parse("") % Number.Parse("O") == Number.Parse(""));
argumentOutOfRangeExceptionThrown = false;
try
{
var temp = Number.Parse("O") % Number.Parse("");
} catch(ArgumentOutOfRangeException)
{
argumentOutOfRangeExceptionThrown = true;
}
Debug.Assert(argumentOutOfRangeExceptionThrown);
}
}
}