Passed
Push — master ( 62401f...daf94f )
by Alec
07:24
created

MoneyBasicDataProvider::allocationDataProvider()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 32
Code Lines 19

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
cc 1
eloc 19
nc 1
nop 0
dl 0
loc 32
rs 9.6333
c 0
b 0
f 0
1
<?php
2
/**
3
 * User: alec
4
 * Date: 07.11.18
5
 * Time: 15:36
6
 */
7
8
namespace Unit\DataProviders;
9
10
11
use AlecRabbit\Money\Money;
12
13
class MoneyBasicDataProvider
14
{
15
    public static function equalityDataProvider(): array
16
    {
17
        return [
18
            // [$amount, $currency, $resulted_amount, $resulted_currency, $equality],
19
            [null, 'eUr', '0', 'EUR', true],
20
            [6, 'usdEt', '5', 'USDET', false],
21
            [5.2, 'eUr', '5.2', 'EUR', true],
22
            [-0.1232, 'usd', '-0.1232', 'USD', true],
23
            [-0.1232, 'usd', null, 'USD', false],
24
            [5, 'usd', '5', 'USD', true],
25
            [5, 'usdEt', '5', 'USDET', true],
26
            [5, 'usdEt', '5', 'eur', false],
27
28
        ];
29
    }
30
31
    public static function divideDataProvider(): array
32
    {
33
        return [
34
//            [$result, $amount, $divisor],
35
            ['1', 1, 1],
36
            ['1.24124', 1.24124, 1],
37
            ['0.5', 3, 6],
38
            ['0.68492305413977', 2.22, 3.24124],
39
            ['0.68940613061185', 2.23453462623452, 3.24124565624525],
40
        ];
41
    }
42
43
    public static function comparisonDataProvider(): array
44
    {
45
        return [
46
            // [$expected, $amount, $currency, $second_amount]
47
            [0, 1, 'eur', 1],
48
            [1, 2, 'eur', 1],
49
            [-1, 0, 'eur', 1],
50
        ];
51
    }
52
53
    public static function invalidOperandDataProvider(): array
54
    {
55
        return [
56
            [[]],
57
            [false],
58
            ['operand'],
59
            [null],
60
            [new \stdClass()],
61
        ];
62
    }
63
64
    public static function allocationDataProvider(): array
65
    {
66
        return [
67
            [32453.34, [1, 1, 1], [10818, 10818, 10817.34], 0],
68
            [32453, [1, 1, 1], [10818, 10818, 10817], 0],
69
            [32453, [1, 1, 1], [10817.67, 10817.67, 10817.66], null],
70
            [100, [1, 1, 1], [33.34, 33.33, 33.33], null],
71
            [100, [1, 1, 1], [34, 33, 33], 0],
72
            [101, [1, 1, 1], [33.67, 33.67, 33.66], null],
73
            [-101, [1, 1, 1], [-33.66, -33.67, -33.67], null],
74
            [-101, [0, 1, 1, 1], [0, -33.66, -33.67, -33.67], null],
75
            [5, [3, 7], [2, 3], 0],
76
            [5, [3, 7], [1.5, 3.5], 2],
77
            [5, [3, 8], [1.36, 3.64], 2],
78
            [5, [7, 3], [4, 1], 0],
79
            [5, [7, 3], [3.5, 1.5], 2],
80
            [5, [0, 5, 3], [0, 3.13, 1.87], 2],
81
            [5, [7, 3, 0], [4, 1, 0], 0],
82
            [5, [7, 3, 0], [3.5, 1.5, 0], 3],
83
            [6.34, [7, 3, 0], [4.438, 1.902, 0], 5],
84
            [6.34456456, [5, 3, 1], [3.52475809, 2.11485485, 0.70495162], 8],
85
            [-5, [7, 3], [-3, -2], 0],
86
            [-5, [7, 3], [-3.5, -1.5], 2],
87
            [-2, [3, 5], [-0.75, -1.25], 4],
88
            [5, [0, 7, 3], [0, 4, 1], 0],
89
            [5, [7, 0, 3], [4, 0, 1], 0],
90
            [7, [7, 0, 3], [4.9, 0, 2.1], 2],
91
            [5, [0, 0, 1], [0, 0, 5], 0],
92
            [5, [0, 3, 7], [0, 2, 3], 0],
93
            [0, [0, 0, 1], [0, 0, 0], 0],
94
            [2, [1, 1, 1], [1, 1, 0], 0],
95
            [1, [1, 1], [1, 0], 0],
96
        ];
97
    }
98
99
    public static function allocationTargetDataProvider(): array
100
    {
101
        return [
102
            [15, 2, [7.5, 7.5], null],
103
            [10, 2, [5, 5], null],
104
            [15, 3, [5, 5, 5], null],
105
            [10, 3, [3.34, 3.33, 3.33], null],
106
            [10, 3, [3.33333334, 3.33333333, 3.33333333], 8],
107
        ];
108
    }
109
110
    public static function comparatorDataProvider(): array
111
    {
112
        return [
113
            // [$amount, $isZero, $isPositive, $isNegative],
114
            [1, false, true, false],
115
            [0, true, false, false],
116
            [-1, false, false, true],
117
            ['1', false, true, false],
118
            ['0', true, false, false],
119
            ['-1', false, false, true],
120
        ];
121
    }
122
    public static function comparatorDataProviderTwo(): array
123
    {
124
        return [
125
            // [$amount, $isNotZero, $isNotPositive, $isNotNegative],
126
            [1, true, false, true],
127
            [0, false, true, true],
128
            [-1, true, true, false],
129
            ['1', true, false, true],
130
            ['0', false, true, true],
131
            ['-1', true, true, false],
132
        ];
133
    }
134
135
    public static function absoluteDataProvider(): array
136
    {
137
        return [
138
            [1, 1],
139
            [1, -1],
140
            [21, -21],
141
            [2, 2],
142
            [0, 0],
143
            [0.234, -0.234],
144
            ['0.2349', -0.234900000],
145
        ];
146
    }
147
148
    public static function negativeDataProvider(): array
149
    {
150
        return [
151
            [1, -1],
152
            [0, 0],
153
            [-1, 1],
154
            ['1', -1],
155
            ['0', 0],
156
            ['-1', 1],
157
        ];
158
    }
159
160
    public static function modDataProvider(): array
161
    {
162
        return [
163
            [11, 5, '1'],
164
            [9, 3, '0'],
165
            [1006, 10, '6'],
166
            [1007, 10, '7'],
167
        ];
168
    }
169
170
    public static function sumDataProvider(): array
171
    {
172
        return [
173
            [[Money::EUR(5), Money::EUR(10), Money::EUR(15)], Money::EUR(30.000)],
174
            [[Money::EUR(-5), Money::EUR(-10.000), Money::EUR(-15)], Money::EUR(-30)],
175
            [[Money::EUR(-5), Money::EUR(10.000), Money::EUR(-15)], Money::EUR(-10.0)],
176
            [[Money::EUR(0)], Money::EUR(0)],
177
            [[Money::EUR(0), Money::EUR(0), Money::EUR(0)], Money::EUR(0)],
178
            [[Money::EUR(0), Money::EUR(0.001), Money::EUR(0)], Money::EUR('0.00100')],
179
        ];
180
    }
181
182
    public static function minDataProvider(): array
183
    {
184
        return [
185
            [[Money::EUR(5), Money::EUR(10), Money::EUR(15.0032323000)], Money::EUR(5)],
186
            [[Money::EUR(-5), Money::EUR(-10), Money::EUR(-15)], Money::EUR(-15)],
187
            [[Money::EUR(0)], Money::EUR(0)],
188
        ];
189
    }
190
191
    public static function maxDataProvider(): array
192
    {
193
        return [
194
            [[Money::EUR(5), Money::EUR(10), Money::EUR(15.0032323000)], Money::EUR('15.0032323')],
195
            [[Money::EUR(-5), Money::EUR(-10), Money::EUR(-15)], Money::EUR(-5)],
196
            [[Money::EUR(0)], Money::EUR(0)],
197
        ];
198
    }
199
200
    public static function avgDataProvider(): array
201
    {
202
        return [
203
            [[Money::EUR(5), Money::EUR(1.5077), Money::EUR(8.2), Money::EUR(10), Money::EUR(15)], Money::EUR(7.94154)],
204
            [[Money::EUR(5), Money::EUR(10), Money::EUR(15)], Money::EUR(10)],
205
            [[Money::EUR(-5), Money::EUR(-10), Money::EUR(-15)], Money::EUR(-10)],
206
            [[Money::EUR(0)], Money::EUR(0)],
207
            [[Money::EUR(1)], Money::EUR(1)],
208
        ];
209
    }
210
211
    public static function multiplyDataProvider(): array
212
    {
213
        return [
214
            // [$result, $amount, $multiplier],
215
            ['1', 1, 1],
216
            ['1.24124', 1, 1.24124],
217
            ['7.1955528', 2.22, 3.24124],
218
            ['7.24267565101206', 2.23453462623452, 3.24124565624525],
219
        ];
220
    }
221
222
    public static function newInstanceDataProvider(): array
223
    {
224
        return [
225
            // [$amount, $currency, $resulted_amount, $resulted_currency],
226
            [null, 'eUr', '0', 'EUR'],
227
            [5.2, 'eUr', '5.2', 'EUR'],
228
            [-0.1232, 'usd', '-0.1232', 'USD'],
229
            [5, 'usd', '5', 'USD'],
230
            [5, 'usdEt', '5', 'USDET'],
231
        ];
232
    }
233
234
    public function newInstanceBadDataProvider(): array
235
    {
236
        return [
237
            // [$amount, $currency],
238
            [false, 'eUr'],
239
            [new \stdClass(), 'eUr'],
240
            [null, true],
241
            [1, 'CODETOOLONG'],
242
        ];
243
    }
244
}