-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCalculationHelper.cs
132 lines (126 loc) · 3.62 KB
/
CalculationHelper.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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace WindowsFormsApp1
{
public static class CalculationHelper
{
/// <summary>
/// Calls appropriate method based on CalculationTypes.
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="calculation"></param>
/// <param name="error"></param>
/// <returns>Outcome of calculation. 0 if an error is thrown.</returns>
public static decimal Calculate(decimal a, decimal b, CalculationTypes calculation, out string error)
{
error = "";
switch (calculation)
{
case CalculationTypes.Multiply:
return Multiply(a, b, out error);
case CalculationTypes.Divide:
return Divide(a, b, out error);
case CalculationTypes.Plus:
return Plus(a, b, out error);
case CalculationTypes.Minus:
return Minus(a, b, out error);
default:
break;
}
return 0;
}
/// <summary>
/// a * b
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="error"></param>
/// <returns></returns>
private static decimal Multiply(decimal a, decimal b, out string error)
{
try
{
error = "";
return a * b;
}
catch (Exception ex)
{
error = BeautifyError(ex);
return 0;
}
}
/// <summary>
/// a / b
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="error"></param>
/// <returns></returns>
private static decimal Divide(decimal a, decimal b, out string error)
{
try
{
error = "";
return a / b;
}
catch (Exception ex)
{
error = BeautifyError(ex);
return 0;
}
}
/// <summary>
/// a + b
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="error"></param>
/// <returns></returns>
private static decimal Plus(decimal a, decimal b, out string error)
{
try
{
error = "";
return a + b;
}
catch (Exception ex)
{
error = BeautifyError(ex);
return 0;
}
}
/// <summary>
/// a - b
/// </summary>
/// <param name="a"></param>
/// <param name="b"></param>
/// <param name="error"></param>
/// <returns></returns>
private static decimal Minus(decimal a, decimal b, out string error)
{
try
{
error = "";
return a - b;
}
catch (Exception ex)
{
error = BeautifyError(ex);
return 0;
}
}
/// <summary>
/// Removes callstack and only returns base error. I.e. 'Cannot divide by zero'
/// </summary>
/// <param name="ex"></param>
/// <returns></returns>
private static string BeautifyError(Exception ex)
{
return ex.Message;
}
}
}