Przeglądaj źródła

random id generated, but there still might be duplicates if we check for equality with id

Trinh Tong 6 lat temu
rodzic
commit
16137712a0

+ 397
- 205
.idea/workspace.xml Wyświetl plik

@@ -2,49 +2,119 @@
2 2
 <project version="4">
3 3
   <component name="ChangeListManager">
4 4
     <list default="true" id="926ad23d-2ddc-41ae-980d-780dcc1811fa" name="Default" comment="">
5
-      <change beforePath="$PROJECT_DIR$/README.md" afterPath="$PROJECT_DIR$/README.md" />
5
+      <change afterPath="$PROJECT_DIR$/Checkbook/src/main/java/Account.java" afterDir="false" />
6
+      <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
7
+      <change beforePath="$PROJECT_DIR$/Checkbook/src/main/java/AccountBook.java" beforeDir="false" afterPath="$PROJECT_DIR$/Checkbook/src/main/java/AccountBook.java" afterDir="false" />
8
+      <change beforePath="$PROJECT_DIR$/Checkbook/src/main/java/Checkbook.java" beforeDir="false" afterPath="$PROJECT_DIR$/Checkbook/src/main/java/Checkbook.java" afterDir="false" />
9
+      <change beforePath="$PROJECT_DIR$/Checkbook/src/main/java/Payee.java" beforeDir="false" afterPath="$PROJECT_DIR$/Checkbook/src/main/java/Payee.java" afterDir="false" />
10
+      <change beforePath="$PROJECT_DIR$/Checkbook/src/main/java/Transaction.java" beforeDir="false" afterPath="$PROJECT_DIR$/Checkbook/src/main/java/Transaction.java" afterDir="false" />
11
+      <change beforePath="$PROJECT_DIR$/Checkbook/src/test/java/CheckbookTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/Checkbook/src/test/java/CheckbookTest.java" afterDir="false" />
12
+      <change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
6 13
     </list>
7 14
     <ignored path="$PROJECT_DIR$/Checkbook/target/" />
8 15
     <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
9
-    <option name="TRACKING_ENABLED" value="true" />
10 16
     <option name="SHOW_DIALOG" value="false" />
11 17
     <option name="HIGHLIGHT_CONFLICTS" value="true" />
12 18
     <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
13 19
     <option name="LAST_RESOLUTION" value="IGNORE" />
14 20
   </component>
21
+  <component name="FUSProjectUsageTrigger">
22
+    <session id="-1834002993">
23
+      <usages-collector id="statistics.lifecycle.project">
24
+        <counts>
25
+          <entry key="project.open.time.3" value="1" />
26
+          <entry key="project.opened" value="1" />
27
+        </counts>
28
+      </usages-collector>
29
+      <usages-collector id="statistics.file.types.open">
30
+        <counts>
31
+          <entry key="CLASS" value="5" />
32
+          <entry key="JAVA" value="39" />
33
+          <entry key="Markdown" value="1" />
34
+        </counts>
35
+      </usages-collector>
36
+      <usages-collector id="statistics.file.types.edit">
37
+        <counts>
38
+          <entry key="JAVA" value="7473" />
39
+          <entry key="Markdown" value="11" />
40
+        </counts>
41
+      </usages-collector>
42
+    </session>
43
+  </component>
15 44
   <component name="FileEditorManager">
16
-    <leaf>
17
-      <file leaf-file-name="README.md" pinned="false" current-in-tab="true">
45
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
46
+      <file pinned="false" current-in-tab="false">
18 47
         <entry file="file://$PROJECT_DIR$/README.md">
19 48
           <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
20
-            <state split_layout="SPLIT">
21
-              <first_editor relative-caret-position="588">
22
-                <caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" />
23
-                <folding />
49
+            <state split_layout="FIRST">
50
+              <first_editor relative-caret-position="1104">
51
+                <caret line="48" lean-forward="true" selection-start-line="48" selection-end-line="48" />
24 52
               </first_editor>
25 53
               <second_editor />
26 54
             </state>
27 55
           </provider>
28 56
         </entry>
29 57
       </file>
58
+      <file pinned="false" current-in-tab="false">
59
+        <entry file="file://$PROJECT_DIR$/Checkbook/src/test/java/CheckbookTest.java">
60
+          <provider selected="true" editor-type-id="text-editor">
61
+            <state relative-caret-position="46">
62
+              <caret line="2" column="27" selection-start-line="2" selection-start-column="27" selection-end-line="2" selection-end-column="27" />
63
+            </state>
64
+          </provider>
65
+        </entry>
66
+      </file>
67
+      <file pinned="false" current-in-tab="false">
68
+        <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Checkbook.java">
69
+          <provider selected="true" editor-type-id="text-editor">
70
+            <state relative-caret-position="1012">
71
+              <caret line="54" column="5" lean-forward="true" selection-start-line="54" selection-start-column="5" selection-end-line="54" selection-end-column="5" />
72
+              <folding>
73
+                <element signature="imports" expanded="true" />
74
+              </folding>
75
+            </state>
76
+          </provider>
77
+        </entry>
78
+      </file>
79
+      <file pinned="false" current-in-tab="true">
80
+        <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Transaction.java">
81
+          <provider selected="true" editor-type-id="text-editor">
82
+            <state relative-caret-position="138">
83
+              <caret line="6" column="53" lean-forward="true" selection-start-line="6" selection-start-column="53" selection-end-line="6" selection-end-column="53" />
84
+              <folding>
85
+                <element signature="imports" expanded="true" />
86
+                <element signature="e#380#389#0" expanded="true" />
87
+              </folding>
88
+            </state>
89
+          </provider>
90
+        </entry>
91
+      </file>
30 92
     </leaf>
31 93
   </component>
32 94
   <component name="FileTemplateManagerImpl">
33 95
     <option name="RECENT_TEMPLATES">
34 96
       <list>
35 97
         <option value="JUnit4 Test Class" />
36
-        <option value="Class" />
37 98
         <option value="Interface" />
99
+        <option value="Class" />
38 100
       </list>
39 101
     </option>
40 102
   </component>
103
+  <component name="FindInProjectRecents">
104
+    <findStrings>
105
+      <find>toArray</find>
106
+      <find>toArrayFrom</find>
107
+      <find>id</find>
108
+      <find>get</find>
109
+      <find>contains</find>
110
+      <find>date</find>
111
+      <find>addAll</find>
112
+    </findStrings>
113
+  </component>
41 114
   <component name="Git.Settings">
42 115
     <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
43 116
   </component>
44 117
   <component name="GradleLocalSettings">
45
-    <option name="externalProjectsViewState">
46
-      <projects_view />
47
-    </option>
48 118
     <option name="projectSyncType">
49 119
       <map>
50 120
         <entry key="$USER_HOME$/GitHub/gs-gradle/initial" value="PREVIEW" />
@@ -54,14 +124,15 @@
54 124
   <component name="IdeDocumentHistory">
55 125
     <option name="CHANGED_PATHS">
56 126
       <list>
57
-        <option value="$PROJECT_DIR$/Checkbook/src/test/java/CheckbookTest.java" />
58
-        <option value="$PROJECT_DIR$/Checkbook/src/main/java/Payee.java" />
59
-        <option value="$PROJECT_DIR$/Checkbook/src/main/java/Transaction.java" />
60
-        <option value="$PROJECT_DIR$/Checkbook/src/main/java/AccountBook.java" />
61
-        <option value="$PROJECT_DIR$/Checkbook/src/main/java/Checkbook.java" />
62 127
         <option value="$PROJECT_DIR$/Checkbook/src/main/java/GenericAccount.java" />
63 128
         <option value="$PROJECT_DIR$/Checkbook/src/main/java/TransactionType.java" />
129
+        <option value="$PROJECT_DIR$/Checkbook/src/main/java/AccountBook.java" />
130
+        <option value="$PROJECT_DIR$/Checkbook/src/main/java/Payee.java" />
64 131
         <option value="$PROJECT_DIR$/README.md" />
132
+        <option value="$PROJECT_DIR$/Checkbook/src/main/java/Account.java" />
133
+        <option value="$PROJECT_DIR$/Checkbook/src/main/java/Transaction.java" />
134
+        <option value="$PROJECT_DIR$/Checkbook/src/main/java/Checkbook.java" />
135
+        <option value="$PROJECT_DIR$/Checkbook/src/test/java/CheckbookTest.java" />
65 136
       </list>
66 137
     </option>
67 138
   </component>
@@ -71,31 +142,23 @@
71 142
     <detection-done>true</detection-done>
72 143
     <sorting>DEFINITION_ORDER</sorting>
73 144
   </component>
145
+  <component name="MavenImportPreferences">
146
+    <option name="importingSettings">
147
+      <MavenImportingSettings>
148
+        <option name="importAutomatically" value="true" />
149
+      </MavenImportingSettings>
150
+    </option>
151
+  </component>
74 152
   <component name="ProjectFrameBounds">
75
-    <option name="x" value="115" />
76
-    <option name="y" value="45" />
77
-    <option name="width" value="1538" />
78
-    <option name="height" value="962" />
153
+    <option name="y" value="23" />
154
+    <option name="width" value="1440" />
155
+    <option name="height" value="877" />
79 156
   </component>
80 157
   <component name="ProjectView">
81
-    <navigator currentView="ProjectPane" proportions="" version="1">
82
-      <flattenPackages />
83
-      <showMembers />
84
-      <showModules />
85
-      <showLibraryContents />
86
-      <hideEmptyPackages />
87
-      <abbreviatePackageNames />
88
-      <autoscrollToSource />
89
-      <autoscrollFromSource />
90
-      <sortByType />
91
-      <manualOrder />
158
+    <navigator proportions="" version="1">
92 159
       <foldersAlwaysOnTop value="true" />
93 160
     </navigator>
94 161
     <panes>
95
-      <pane id="Scope" />
96
-      <pane id="Scratches" />
97
-      <pane id="AndroidView" />
98
-      <pane id="PackagesPane" />
99 162
       <pane id="ProjectPane">
100 163
         <subPane>
101 164
           <expand>
@@ -129,23 +192,41 @@
129 192
               <item name="main" type="462c0819:PsiDirectoryNode" />
130 193
               <item name="java" type="462c0819:PsiDirectoryNode" />
131 194
             </path>
195
+            <path>
196
+              <item name="Checkbook-OldStyle" type="b2602c69:ProjectViewProjectNode" />
197
+              <item name="Checkbook-OldStyle" type="462c0819:PsiDirectoryNode" />
198
+              <item name="Checkbook" type="462c0819:PsiDirectoryNode" />
199
+              <item name="src" type="462c0819:PsiDirectoryNode" />
200
+              <item name="test" type="462c0819:PsiDirectoryNode" />
201
+            </path>
202
+            <path>
203
+              <item name="Checkbook-OldStyle" type="b2602c69:ProjectViewProjectNode" />
204
+              <item name="Checkbook-OldStyle" type="462c0819:PsiDirectoryNode" />
205
+              <item name="Checkbook" type="462c0819:PsiDirectoryNode" />
206
+              <item name="src" type="462c0819:PsiDirectoryNode" />
207
+              <item name="test" type="462c0819:PsiDirectoryNode" />
208
+              <item name="java" type="462c0819:PsiDirectoryNode" />
209
+            </path>
132 210
           </expand>
133 211
           <select />
134 212
         </subPane>
135 213
       </pane>
214
+      <pane id="PackagesPane" />
215
+      <pane id="Scope" />
136 216
     </panes>
137 217
   </component>
138 218
   <component name="PropertiesComponent">
139
-    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
140
-    <property name="settings.editor.selected.configurable" value="configurable.group.appearance" />
141 219
     <property name="WebServerToolWindowFactoryState" value="false" />
142 220
     <property name="aspect.path.notification.shown" value="true" />
143
-    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
221
+    <property name="com.android.tools.idea.instantapp.provision.ProvisionBeforeRunTaskProvider.myTimeStamp" value="1544104481965" />
222
+    <property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrary" value="JUnit4" />
144 223
     <property name="jdk.selected.JAVA_MODULE" value="1.8" />
145
-    <property name="project.structure.last.edited" value="Modules" />
224
+    <property name="last_opened_file_path" value="$PROJECT_DIR$" />
225
+    <property name="nodejs_interpreter_path.stuck_in_default_project" value="undefined stuck path" />
226
+    <property name="project.structure.last.edited" value="SDKs" />
146 227
     <property name="project.structure.proportion" value="0.0" />
147
-    <property name="project.structure.side.proportion" value="0.0" />
148
-    <property name="com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrary" value="JUnit4" />
228
+    <property name="project.structure.side.proportion" value="0.2" />
229
+    <property name="settings.editor.selected.configurable" value="configurable.group.appearance" />
149 230
   </component>
150 231
   <component name="RecentsManager">
151 232
     <key name="CreateTestDialog.RecentsKey">
@@ -167,90 +248,113 @@
167 248
       </list>
168 249
     </option>
169 250
   </component>
170
-  <component name="RunManager">
251
+  <component name="RunManager" selected="JUnit.CheckbookTest.getTransactionsForPayeeExists">
171 252
     <configuration default="true" type="Applet" factoryName="Applet">
172
-      <option name="WIDTH" value="400" />
173
-      <option name="HEIGHT" value="300" />
174 253
       <option name="POLICY_FILE" value="$APPLICATION_HOME_DIR$/bin/appletviewer.policy" />
175
-      <module />
254
+      <method v="2">
255
+        <option name="Make" enabled="true" />
256
+      </method>
176 257
     </configuration>
177 258
     <configuration default="true" type="Application" factoryName="Application">
178
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
179
-      <option name="MAIN_CLASS_NAME" />
180
-      <option name="VM_PARAMETERS" />
181
-      <option name="PROGRAM_PARAMETERS" />
182 259
       <option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
183
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
184
-      <option name="ALTERNATIVE_JRE_PATH" />
185
-      <option name="ENABLE_SWING_INSPECTOR" value="false" />
186
-      <option name="ENV_VARIABLES" />
187
-      <option name="PASS_PARENT_ENVS" value="true" />
188
-      <module name="" />
189
-      <envs />
260
+      <method v="2">
261
+        <option name="Make" enabled="true" />
262
+      </method>
190 263
     </configuration>
191
-    <configuration default="true" type="JUnit" factoryName="JUnit">
192
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
193
-      <module name="" />
194
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
195
-      <option name="ALTERNATIVE_JRE_PATH" />
196
-      <option name="PACKAGE_NAME" />
197
-      <option name="MAIN_CLASS_NAME" />
198
-      <option name="METHOD_NAME" />
199
-      <option name="TEST_OBJECT" value="class" />
200
-      <option name="VM_PARAMETERS" value="-ea" />
201
-      <option name="PARAMETERS" />
264
+    <configuration name="CheckbookTest.getTransactionAddingNewTForDateA" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
265
+      <module name="Checkbook" />
266
+      <option name="PACKAGE_NAME" value="" />
267
+      <option name="MAIN_CLASS_NAME" value="CheckbookTest" />
268
+      <option name="METHOD_NAME" value="getTransactionAddingNewTForDateA" />
269
+      <option name="TEST_OBJECT" value="method" />
202 270
       <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
203
-      <option name="ENV_VARIABLES" />
204
-      <option name="PASS_PARENT_ENVS" value="true" />
205
-      <option name="TEST_SEARCH_SCOPE">
206
-        <value defaultName="singleModule" />
207
-      </option>
208
-      <envs />
209
-      <patterns />
271
+      <method v="2">
272
+        <option name="Make" enabled="true" />
273
+      </method>
210 274
     </configuration>
211
-    <configuration default="true" type="Remote" factoryName="Remote">
212
-      <option name="USE_SOCKET_TRANSPORT" value="true" />
213
-      <option name="SERVER_MODE" value="false" />
214
-      <option name="SHMEM_ADDRESS" value="javadebug" />
215
-      <option name="HOST" value="localhost" />
216
-      <option name="PORT" value="5005" />
275
+    <configuration name="CheckbookTest.getTransactionsForDate" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
276
+      <module name="Checkbook" />
277
+      <option name="PACKAGE_NAME" value="" />
278
+      <option name="MAIN_CLASS_NAME" value="CheckbookTest" />
279
+      <option name="METHOD_NAME" value="getTransactionsForDate" />
280
+      <option name="TEST_OBJECT" value="method" />
281
+      <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
282
+      <method v="2">
283
+        <option name="Make" enabled="true" />
284
+      </method>
285
+    </configuration>
286
+    <configuration name="CheckbookTest.getTransactionsForDateNull" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
287
+      <module name="Checkbook" />
288
+      <option name="PACKAGE_NAME" value="" />
289
+      <option name="MAIN_CLASS_NAME" value="CheckbookTest" />
290
+      <option name="METHOD_NAME" value="getTransactionsForDateNull" />
291
+      <option name="TEST_OBJECT" value="method" />
292
+      <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
293
+      <method v="2">
294
+        <option name="Make" enabled="true" />
295
+      </method>
296
+    </configuration>
297
+    <configuration name="CheckbookTest.getTransactionsForPayeeExists" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
298
+      <module name="Checkbook" />
299
+      <option name="PACKAGE_NAME" value="" />
300
+      <option name="MAIN_CLASS_NAME" value="CheckbookTest" />
301
+      <option name="METHOD_NAME" value="getTransactionsForPayeeExists" />
302
+      <option name="TEST_OBJECT" value="method" />
303
+      <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
304
+      <method v="2">
305
+        <option name="Make" enabled="true" />
306
+      </method>
307
+    </configuration>
308
+    <configuration name="CheckbookTest.testToArray" type="JUnit" factoryName="JUnit" temporary="true" nameIsGenerated="true">
309
+      <module name="Checkbook" />
310
+      <option name="PACKAGE_NAME" value="" />
311
+      <option name="MAIN_CLASS_NAME" value="CheckbookTest" />
312
+      <option name="METHOD_NAME" value="testToArray" />
313
+      <option name="TEST_OBJECT" value="method" />
314
+      <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
315
+      <method v="2">
316
+        <option name="Make" enabled="true" />
317
+      </method>
318
+    </configuration>
319
+    <configuration default="true" type="JUnit" factoryName="JUnit">
320
+      <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
321
+      <method v="2">
322
+        <option name="Make" enabled="true" />
323
+      </method>
217 324
     </configuration>
218 325
     <configuration default="true" type="TestNG" factoryName="TestNG">
219
-      <extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
220
-      <module name="" />
221
-      <option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
222
-      <option name="ALTERNATIVE_JRE_PATH" />
223
-      <option name="SUITE_NAME" />
224
-      <option name="PACKAGE_NAME" />
225
-      <option name="MAIN_CLASS_NAME" />
226
-      <option name="METHOD_NAME" />
227
-      <option name="GROUP_NAME" />
228
-      <option name="TEST_OBJECT" value="CLASS" />
229
-      <option name="VM_PARAMETERS" value="-ea" />
230
-      <option name="PARAMETERS" />
231 326
       <option name="WORKING_DIRECTORY" value="%MODULE_WORKING_DIR%" />
232
-      <option name="OUTPUT_DIRECTORY" />
233
-      <option name="ANNOTATION_TYPE" />
234
-      <option name="ENV_VARIABLES" />
235
-      <option name="PASS_PARENT_ENVS" value="true" />
236
-      <option name="TEST_SEARCH_SCOPE">
237
-        <value defaultName="singleModule" />
238
-      </option>
239
-      <option name="USE_DEFAULT_REPORTERS" value="false" />
240
-      <option name="PROPERTIES_FILE" />
241
-      <envs />
242 327
       <properties />
243 328
       <listeners />
329
+      <method v="2">
330
+        <option name="Make" enabled="true" />
331
+      </method>
244 332
     </configuration>
245 333
     <configuration default="true" type="#org.jetbrains.idea.devkit.run.PluginConfigurationType" factoryName="Plugin">
246 334
       <module name="" />
247 335
       <option name="VM_PARAMETERS" value="-Xmx512m -Xms256m -XX:MaxPermSize=250m -ea" />
248 336
       <option name="PROGRAM_PARAMETERS" />
249 337
       <predefined_log_file id="idea.log" enabled="true" />
338
+      <method v="2">
339
+        <option name="Make" enabled="true" />
340
+      </method>
250 341
     </configuration>
251
-  </component>
252
-  <component name="ShelveChangesManager" show_recycled="false">
253
-    <option name="remove_strategy" value="false" />
342
+    <list>
343
+      <item itemvalue="JUnit.CheckbookTest.getTransactionsForDate" />
344
+      <item itemvalue="JUnit.CheckbookTest.getTransactionsForDateNull" />
345
+      <item itemvalue="JUnit.CheckbookTest.getTransactionAddingNewTForDateA" />
346
+      <item itemvalue="JUnit.CheckbookTest.getTransactionsForPayeeExists" />
347
+      <item itemvalue="JUnit.CheckbookTest.testToArray" />
348
+    </list>
349
+    <recent_temporary>
350
+      <list>
351
+        <item itemvalue="JUnit.CheckbookTest.getTransactionsForPayeeExists" />
352
+        <item itemvalue="JUnit.CheckbookTest.testToArray" />
353
+        <item itemvalue="JUnit.CheckbookTest.getTransactionAddingNewTForDateA" />
354
+        <item itemvalue="JUnit.CheckbookTest.getTransactionsForDateNull" />
355
+        <item itemvalue="JUnit.CheckbookTest.getTransactionsForDate" />
356
+      </list>
357
+    </recent_temporary>
254 358
   </component>
255 359
   <component name="SvnConfiguration">
256 360
     <configuration />
@@ -263,42 +367,77 @@
263 367
       <option name="presentableId" value="Default" />
264 368
       <updated>1543958631974</updated>
265 369
       <workItem from="1543958633447" duration="3259000" />
370
+      <workItem from="1544046850600" duration="18617000" />
266 371
     </task>
267 372
     <servers />
268 373
   </component>
374
+  <component name="TestHistory">
375
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.05 at 22h 10m 55s.xml">
376
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
377
+    </history-entry>
378
+    <history-entry file="CheckbookTest_testToArray - 2018.12.05 at 22h 42m 04s.xml">
379
+      <configuration name="CheckbookTest.testToArray" configurationId="JUnit" />
380
+    </history-entry>
381
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.06 at 08h 30m 49s.xml">
382
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
383
+    </history-entry>
384
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.06 at 08h 38m 43s.xml">
385
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
386
+    </history-entry>
387
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.06 at 08h 40m 02s.xml">
388
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
389
+    </history-entry>
390
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.06 at 08h 40m 22s.xml">
391
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
392
+    </history-entry>
393
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.06 at 08h 40m 25s.xml">
394
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
395
+    </history-entry>
396
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.06 at 08h 46m 02s.xml">
397
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
398
+    </history-entry>
399
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.06 at 08h 46m 13s.xml">
400
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
401
+    </history-entry>
402
+    <history-entry file="CheckbookTest_getTransactionsForPayeeExists - 2018.12.06 at 08h 49m 15s.xml">
403
+      <configuration name="CheckbookTest.getTransactionsForPayeeExists" configurationId="JUnit" />
404
+    </history-entry>
405
+  </component>
269 406
   <component name="TimeTrackingManager">
270
-    <option name="totallyTimeSpent" value="3259000" />
407
+    <option name="totallyTimeSpent" value="21876000" />
271 408
   </component>
272 409
   <component name="ToolWindowManager">
273
-    <frame x="115" y="45" width="1538" height="962" extended-state="0" />
410
+    <frame x="0" y="23" width="1440" height="877" extended-state="0" />
274 411
     <editor active="true" />
275 412
     <layout>
276
-      <window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
277
-      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
278
-      <window_info id="Palette&#9;" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
279
-      <window_info id="Image Layers" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
280
-      <window_info id="Capture Analysis" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
281
-      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
282
-      <window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
283
-      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
284
-      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
285
-      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
286
-      <window_info id="Capture Tool" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
287
-      <window_info id="Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
288
-      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.24966353" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
289
-      <window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
290
-      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
291
-      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
292
-      <window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
293
-      <window_info id="Theme Preview" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
294
-      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
295
-      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
296
-      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
297
-      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
298
-      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
299
-      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
300
-      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
301
-      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
413
+      <window_info content_ui="combo" id="Project" order="0" visible="true" weight="0.2532189" />
414
+      <window_info id="Structure" order="1" weight="0.25" />
415
+      <window_info id="Image Layers" order="2" />
416
+      <window_info id="Designer" order="3" />
417
+      <window_info id="UI Designer" order="4" />
418
+      <window_info id="Capture Tool" order="5" />
419
+      <window_info id="Favorites" order="6" side_tool="true" />
420
+      <window_info anchor="bottom" id="Database Changes" show_stripe_button="false" />
421
+      <window_info anchor="bottom" id="Messages" weight="0.32769832" />
422
+      <window_info anchor="bottom" id="Message" order="0" />
423
+      <window_info anchor="bottom" id="Find" order="1" />
424
+      <window_info anchor="bottom" id="Run" order="2" sideWeight="0.49928468" visible="true" weight="0.32769832" />
425
+      <window_info anchor="bottom" id="Debug" order="3" weight="0.39921975" />
426
+      <window_info anchor="bottom" id="Cvs" order="4" weight="0.25" />
427
+      <window_info anchor="bottom" id="Inspection" order="5" weight="0.4" />
428
+      <window_info anchor="bottom" id="TODO" order="6" />
429
+      <window_info anchor="bottom" id="Terminal" order="7" />
430
+      <window_info anchor="bottom" id="Event Log" order="8" sideWeight="0.5007153" side_tool="true" weight="0.32769832" />
431
+      <window_info anchor="bottom" id="Version Control" order="9" />
432
+      <window_info anchor="right" id="Commander" order="0" weight="0.4" />
433
+      <window_info anchor="right" id="Ant Build" order="1" weight="0.25" />
434
+      <window_info anchor="right" content_ui="combo" id="Hierarchy" order="2" weight="0.25" />
435
+      <window_info anchor="right" id="Palette" order="3" />
436
+      <window_info anchor="right" id="Capture Analysis" order="4" />
437
+      <window_info anchor="right" id="Theme Preview" order="5" />
438
+      <window_info anchor="right" id="Database" order="6" />
439
+      <window_info anchor="right" id="Palette&#9;" order="7" />
440
+      <window_info anchor="right" id="Maven Projects" order="8" />
302 441
     </layout>
303 442
   </component>
304 443
   <component name="TypeScriptGeneratedFilesManager">
@@ -307,125 +446,177 @@
307 446
   <component name="VcsContentAnnotationSettings">
308 447
     <option name="myLimit" value="2678400000" />
309 448
   </component>
310
-  <component name="XDebuggerManager">
311
-    <breakpoint-manager />
312
-    <watches-manager />
313
-  </component>
314 449
   <component name="editorHistoryManager">
315
-    <entry file="file://$PROJECT_DIR$/Checkbook/src/test/java/CheckbookTest.java">
450
+    <entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/src.zip!/java/util/concurrent/atomic/AtomicReference.java" />
451
+    <entry file="file://$PROJECT_DIR$/Checkbook/pom.xml">
452
+      <provider selected="true" editor-type-id="text-editor" />
453
+    </entry>
454
+    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/GenericAccount.java">
316 455
       <provider selected="true" editor-type-id="text-editor">
317
-        <state relative-caret-position="170">
318
-          <caret line="10" column="5" lean-forward="false" selection-start-line="10" selection-start-column="5" selection-end-line="10" selection-end-column="5" />
319
-          <folding />
456
+        <state relative-caret-position="23">
457
+          <caret line="1" selection-start-line="1" selection-end-line="1" />
320 458
         </state>
321 459
       </provider>
322 460
     </entry>
323
-    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Payee.java">
461
+    <entry file="jar://$MAVEN_REPOSITORY$/junit/junit/4.0/junit-4.0.jar!/org/junit/internal/runners/TestClassMethodsRunner.class">
324 462
       <provider selected="true" editor-type-id="text-editor">
325
-        <state relative-caret-position="357">
326
-          <caret line="21" column="0" lean-forward="false" selection-start-line="21" selection-start-column="0" selection-end-line="21" selection-end-column="0" />
463
+        <state relative-caret-position="124">
464
+          <caret line="40" selection-start-line="40" selection-end-line="40" />
465
+        </state>
466
+      </provider>
467
+    </entry>
468
+    <entry file="jar://$MAVEN_REPOSITORY$/junit/junit/4.0/junit-4.0.jar!/org/junit/internal/runners/BeforeAndAfterRunner.class">
469
+      <provider selected="true" editor-type-id="text-editor">
470
+        <state relative-caret-position="139">
471
+          <caret line="29" selection-start-line="29" selection-end-line="29" />
472
+        </state>
473
+      </provider>
474
+    </entry>
475
+    <entry file="jar://$MAVEN_REPOSITORY$/junit/junit/4.0/junit-4.0.jar!/org/junit/internal/runners/TestClassRunner.class">
476
+      <provider selected="true" editor-type-id="text-editor">
477
+        <state relative-caret-position="323">
478
+          <caret line="50" selection-start-line="50" selection-end-line="50" />
327 479
           <folding>
328
-            <element signature="e#151#152#0" expanded="true" />
329
-            <element signature="e#184#185#0" expanded="true" />
330
-            <element signature="e#236#237#0" expanded="true" />
331
-            <element signature="e#280#281#0" expanded="true" />
332
-            <element signature="e#316#317#0" expanded="true" />
333
-            <element signature="e#348#349#0" expanded="true" />
334
-            <element signature="e#398#399#0" expanded="true" />
335
-            <element signature="e#440#441#0" expanded="true" />
336
-            <element signature="e#479#480#0" expanded="true" />
337
-            <element signature="e#514#515#0" expanded="true" />
338
-            <element signature="e#570#571#0" expanded="true" />
339
-            <element signature="e#618#619#0" expanded="true" />
480
+            <element signature="e#1574#1575#0" expanded="true" />
481
+            <element signature="e#1656#1657#0" expanded="true" />
340 482
           </folding>
341 483
         </state>
342 484
       </provider>
343 485
     </entry>
344
-    <entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_161.jdk/Contents/Home/src.zip!/java/util/concurrent/atomic/AtomicReference.java">
486
+    <entry file="jar://$MAVEN_REPOSITORY$/junit/junit/4.0/junit-4.0.jar!/org/junit/internal/runners/TestMethodRunner.class">
345 487
       <provider selected="true" editor-type-id="text-editor">
346
-        <state relative-caret-position="134">
347
-          <caret line="47" column="3" lean-forward="true" selection-start-line="47" selection-start-column="3" selection-end-line="47" selection-end-column="3" />
348
-          <folding />
488
+        <state relative-caret-position="124">
489
+          <caret line="48" selection-start-line="48" selection-end-line="48" />
490
+          <folding>
491
+            <element signature="e#2859#2860#0" expanded="true" />
492
+            <element signature="e#2894#2895#0" expanded="true" />
493
+          </folding>
349 494
         </state>
350 495
       </provider>
351 496
     </entry>
352
-    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/GenericAccount.java">
497
+    <entry file="jar://$MAVEN_REPOSITORY$/junit/junit/4.0/junit-4.0.jar!/org/junit/Assert.class">
353 498
       <provider selected="true" editor-type-id="text-editor">
354
-        <state relative-caret-position="17">
355
-          <caret line="1" column="0" lean-forward="false" selection-start-line="1" selection-start-column="0" selection-end-line="1" selection-end-column="0" />
356
-          <folding />
499
+        <state relative-caret-position="124">
500
+          <caret line="31" selection-start-line="31" selection-end-line="31" />
501
+          <folding>
502
+            <element signature="e#375#376#0" expanded="true" />
503
+            <element signature="e#426#427#0" expanded="true" />
504
+            <element signature="e#751#752#0" expanded="true" />
505
+          </folding>
357 506
         </state>
358 507
       </provider>
359 508
     </entry>
360
-    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/TransactionType.java">
509
+    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Payee.java">
361 510
       <provider selected="true" editor-type-id="text-editor">
362
-        <state relative-caret-position="17">
363
-          <caret line="1" column="0" lean-forward="false" selection-start-line="1" selection-start-column="0" selection-end-line="1" selection-end-column="0" />
364
-          <folding />
511
+        <state relative-caret-position="333">
512
+          <caret line="44" column="68" selection-start-line="44" selection-start-column="68" selection-end-line="44" selection-end-column="68" />
365 513
         </state>
366 514
       </provider>
367 515
     </entry>
368
-    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Transaction.java">
516
+    <entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/src.zip!/java/util/concurrent/atomic/AtomicReference.java">
369 517
       <provider selected="true" editor-type-id="text-editor">
370
-        <state relative-caret-position="442">
371
-          <caret line="26" column="18" lean-forward="true" selection-start-line="26" selection-start-column="0" selection-end-line="27" selection-end-column="0" />
518
+        <state relative-caret-position="168">
519
+          <caret line="83" column="19" selection-start-line="83" selection-start-column="19" selection-end-line="83" selection-end-column="19" />
372 520
           <folding>
373
-            <element signature="imports" expanded="true" />
374
-            <element signature="e#175#184#0" expanded="true" />
375
-            <element signature="e#259#270#0" expanded="true" />
376
-            <element signature="e#689#690#0" expanded="true" />
377
-            <element signature="e#720#721#0" expanded="true" />
378
-            <element signature="e#754#755#0" expanded="true" />
379
-            <element signature="e#787#788#0" expanded="true" />
380
-            <element signature="e#827#828#0" expanded="true" />
381
-            <element signature="e#855#856#0" expanded="true" />
382
-            <element signature="e#886#887#0" expanded="true" />
383
-            <element signature="e#913#914#0" expanded="true" />
384
-            <element signature="e#953#954#0" expanded="true" />
385
-            <element signature="e#985#986#0" expanded="true" />
386
-            <element signature="e#1016#1017#0" expanded="true" />
387
-            <element signature="e#1044#1045#0" expanded="true" />
388
-            <element signature="e#1085#1086#0" expanded="true" />
389
-            <element signature="e#1119#1120#0" expanded="true" />
521
+            <element signature="e#1707#1708#0" expanded="true" />
522
+            <element signature="e#1735#1736#0" expanded="true" />
390 523
           </folding>
391 524
         </state>
392 525
       </provider>
393 526
     </entry>
394
-    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/AccountBook.java">
527
+    <entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/src.zip!/java/time/LocalDate.java">
395 528
       <provider selected="true" editor-type-id="text-editor">
396
-        <state relative-caret-position="204">
397
-          <caret line="12" column="0" lean-forward="true" selection-start-line="12" selection-start-column="0" selection-end-line="12" selection-end-column="0" />
398
-          <folding />
529
+        <state relative-caret-position="1690">
530
+          <caret line="479" column="18" selection-start-line="479" selection-start-column="15" selection-end-line="479" selection-end-column="18" />
399 531
         </state>
400 532
       </provider>
401 533
     </entry>
402
-    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Checkbook.java">
534
+    <entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/src.zip!/java/util/ArrayList.java">
403 535
       <provider selected="true" editor-type-id="text-editor">
404
-        <state relative-caret-position="51">
405
-          <caret line="3" column="0" lean-forward="false" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
406
-          <folding />
536
+        <state relative-caret-position="142">
537
+          <caret line="460" column="19" selection-start-line="460" selection-start-column="19" selection-end-line="460" selection-end-column="19" />
538
+          <folding>
539
+            <element signature="e#11079#11080#0" expanded="true" />
540
+            <element signature="e#11117#11118#0" expanded="true" />
541
+            <element signature="e#13713#13714#0" expanded="true" />
542
+            <element signature="e#13768#13769#0" expanded="true" />
543
+          </folding>
407 544
         </state>
408 545
       </provider>
409 546
     </entry>
410
-    <entry file="file://$PROJECT_DIR$/Checkbook/pom.xml">
547
+    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/TransactionType.java">
548
+      <provider selected="true" editor-type-id="text-editor">
549
+        <state relative-caret-position="23">
550
+          <caret line="1" column="12" selection-start-line="1" selection-start-column="12" selection-end-line="1" selection-end-column="12" />
551
+        </state>
552
+      </provider>
553
+    </entry>
554
+    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Account.java">
555
+      <provider selected="true" editor-type-id="text-editor">
556
+        <state relative-caret-position="46">
557
+          <caret line="2" lean-forward="true" selection-start-line="2" selection-end-line="2" />
558
+        </state>
559
+      </provider>
560
+    </entry>
561
+    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/AccountBook.java">
562
+      <provider selected="true" editor-type-id="text-editor">
563
+        <state relative-caret-position="46">
564
+          <caret line="2" column="17" selection-start-line="2" selection-start-column="17" selection-end-line="2" selection-end-column="17" />
565
+        </state>
566
+      </provider>
567
+    </entry>
568
+    <entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/src.zip!/java/util/function/Consumer.java">
411 569
       <provider selected="true" editor-type-id="text-editor">
412
-        <state relative-caret-position="0">
413
-          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
414
-          <folding />
570
+        <state relative-caret-position="158">
571
+          <caret line="48" column="9" selection-start-line="48" selection-start-column="9" selection-end-line="48" selection-end-column="9" />
415 572
         </state>
416 573
       </provider>
417 574
     </entry>
418 575
     <entry file="file://$PROJECT_DIR$/README.md">
419 576
       <provider selected="true" editor-type-id="split-provider[text-editor;markdown-preview-editor]">
420
-        <state split_layout="SPLIT">
421
-          <first_editor relative-caret-position="588">
422
-            <caret line="39" column="0" lean-forward="false" selection-start-line="39" selection-start-column="0" selection-end-line="39" selection-end-column="0" />
423
-            <folding />
577
+        <state split_layout="FIRST">
578
+          <first_editor relative-caret-position="1104">
579
+            <caret line="48" lean-forward="true" selection-start-line="48" selection-end-line="48" />
424 580
           </first_editor>
425 581
           <second_editor />
426 582
         </state>
427 583
       </provider>
428 584
     </entry>
585
+    <entry file="file://$PROJECT_DIR$/Checkbook/src/test/java/CheckbookTest.java">
586
+      <provider selected="true" editor-type-id="text-editor">
587
+        <state relative-caret-position="46">
588
+          <caret line="2" column="27" selection-start-line="2" selection-start-column="27" selection-end-line="2" selection-end-column="27" />
589
+        </state>
590
+      </provider>
591
+    </entry>
592
+    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Checkbook.java">
593
+      <provider selected="true" editor-type-id="text-editor">
594
+        <state relative-caret-position="1012">
595
+          <caret line="54" column="5" lean-forward="true" selection-start-line="54" selection-start-column="5" selection-end-line="54" selection-end-column="5" />
596
+          <folding>
597
+            <element signature="imports" expanded="true" />
598
+          </folding>
599
+        </state>
600
+      </provider>
601
+    </entry>
602
+    <entry file="jar:///Library/Java/JavaVirtualMachines/jdk1.8.0_181.jdk/Contents/Home/src.zip!/java/util/concurrent/ThreadLocalRandom.java">
603
+      <provider selected="true" editor-type-id="text-editor">
604
+        <state relative-caret-position="-3060">
605
+          <caret line="82" column="13" selection-start-line="82" selection-start-column="13" selection-end-line="82" selection-end-column="13" />
606
+        </state>
607
+      </provider>
608
+    </entry>
609
+    <entry file="file://$PROJECT_DIR$/Checkbook/src/main/java/Transaction.java">
610
+      <provider selected="true" editor-type-id="text-editor">
611
+        <state relative-caret-position="138">
612
+          <caret line="6" column="53" lean-forward="true" selection-start-line="6" selection-start-column="53" selection-end-line="6" selection-end-column="53" />
613
+          <folding>
614
+            <element signature="imports" expanded="true" />
615
+            <element signature="e#380#389#0" expanded="true" />
616
+          </folding>
617
+        </state>
618
+      </provider>
619
+    </entry>
429 620
   </component>
430 621
   <component name="masterDetails">
431 622
     <states>
@@ -503,6 +694,7 @@
503 694
       </state>
504 695
       <state key="ProjectLibrariesConfigurable.UI">
505 696
         <settings>
697
+          <last-edited>Maven: junit:junit:4.0</last-edited>
506 698
           <splitter-proportions>
507 699
             <option name="proportions">
508 700
               <list>

+ 2
- 0
Checkbook/src/main/java/Account.java Wyświetl plik

@@ -0,0 +1,2 @@
1
+public class Account<T extends AccountBook> {
2
+}

+ 2
- 0
Checkbook/src/main/java/AccountBook.java Wyświetl plik

@@ -1,6 +1,7 @@
1 1
 import java.time.LocalDate;
2 2
 
3 3
 public interface AccountBook {
4
+
4 5
     public Integer getId();
5 6
     public LocalDate getDate();
6 7
     public TransactionType getType();
@@ -9,4 +10,5 @@ public interface AccountBook {
9 10
     public Payee getPayee();
10 11
     public void setPayee(Payee payee);
11 12
     public Double getAmount();
13
+
12 14
 }

+ 128
- 0
Checkbook/src/main/java/Checkbook.java Wyświetl plik

@@ -1,5 +1,133 @@
1
+import java.time.LocalDate;
2
+import java.util.*;
3
+
1 4
 public class Checkbook {
5
+    // Checkbook is a list of Transactions
6
+    // Gotta do something to set the ID of the transactions?
7
+    private ArrayList<Transaction> checkbook;
8
+    private ArrayList<Transaction> debits = new ArrayList<>();
9
+    private ArrayList<Transaction> credits = new ArrayList<>();;
10
+
11
+    public Checkbook(Transaction ... t) {
12
+        this.checkbook = new ArrayList<>(Arrays.asList(t));
13
+    }
14
+
15
+    public Checkbook(List<Transaction> checkbook) {
16
+        this.checkbook = new ArrayList<>(checkbook);
17
+    }
18
+
19
+    public Checkbook(double cashAmount) {
20
+        this();
21
+        Transaction t = new Transaction("owner", new Payee(), TransactionType.DEBIT, cashAmount);
22
+        checkbook.add(t);
23
+        debits.add(t);
24
+    }
25
+
26
+    public Checkbook(Payee owner, double cashAmount) {
27
+        this();
28
+        Transaction t = new Transaction("owner", owner, TransactionType.DEBIT, cashAmount);
29
+        checkbook.add(t);
30
+        debits.add(t);
31
+    }
2 32
 
3 33
     //blind us with your Java eloquence....
4 34
 
35
+    public int size() {
36
+        return this.checkbook.size();
37
+    }
38
+
39
+    public boolean isEmpty() {
40
+        return this.checkbook.isEmpty();
41
+    }
42
+
43
+    public boolean contains(Transaction transaction) {
44
+        return this.checkbook.contains(transaction);
45
+    }
46
+
47
+    public boolean add(Transaction transaction) {
48
+        if (transaction.getType().equals(TransactionType.DEBIT)) {
49
+            debits.add(transaction);
50
+        } else {
51
+            credits.add(transaction);
52
+        }
53
+
54
+        return this.checkbook.add(transaction);
55
+    }
56
+
57
+    public boolean remove(Transaction transaction) {
58
+        return this.checkbook.remove(transaction);
59
+    }
60
+
61
+    public Iterator<Transaction> iterator() {
62
+        return this.checkbook.iterator();
63
+    }
64
+
65
+    public Transaction[] toArray() {
66
+        return checkbook.toArray(new Transaction[checkbook.size()]);
67
+    }
68
+
69
+    public Transaction[] toArray(Transaction[] a) {
70
+        return this.checkbook.toArray(a);
71
+    }
72
+
73
+    public Transaction[] toArrayFromList(List<Transaction> list) {
74
+        return list.toArray(new Transaction[list.size()]);
75
+    }
76
+
77
+    public double checkbookValue() {
78
+        double sum = 0.0;
79
+        for (Transaction t: this.checkbook) {
80
+            sum += t.getAmount();
81
+        }
82
+        return sum;
83
+    }
84
+
85
+    public ArrayList<Transaction> getCheckbook() {
86
+        return checkbook;
87
+    }
88
+
89
+    public Transaction[] getTransactionsForDate(LocalDate aDate) {
90
+        ArrayList<Transaction> arr = new ArrayList<>();
91
+
92
+        for (Transaction t: this.checkbook) {
93
+            if (t.getDate().equals(aDate)) {
94
+                arr.add(t);
95
+            }
96
+        }
97
+        return this.toArrayFromList(arr);
98
+    }
99
+
100
+    public Transaction[] getAllTransactionsForPayee(Payee p) {
101
+        ArrayList<Transaction> arr = new ArrayList<>();
102
+        for (Transaction t: this.checkbook) {
103
+            if (t.getPayee().equals(p)) {
104
+                arr.add(t);
105
+            }
106
+        }
107
+        return this.toArrayFromList(arr);
108
+    }
109
+
110
+    public boolean containsAll(Collection<Transaction> c) {
111
+        return checkbook.containsAll(c);
112
+    }
113
+
114
+    boolean addAll(Collection<Transaction> c) {
115
+        return checkbook.addAll(c);
116
+    }
117
+
118
+    boolean removeAll(Collection<Transaction> c) {
119
+        return checkbook.removeAll(c);
120
+    }
121
+
122
+    void clear() {
123
+        checkbook.clear();
124
+    }
125
+
126
+    public Transaction[] getAllDebitTransactions() {
127
+        return this.toArrayFromList(debits);
128
+    }
129
+
130
+    public Transaction[] getAllCreditTransactions() {
131
+        return this.toArrayFromList(credits);
132
+    }
5 133
 }

+ 14
- 0
Checkbook/src/main/java/Payee.java Wyświetl plik

@@ -4,6 +4,15 @@ public class Payee {
4 4
     private String givenName;
5 5
     private String emailAddress;
6 6
 
7
+    public Payee(String familyName, String givenName, String emailAddress) {
8
+        this.familyName = familyName;
9
+        this.givenName = givenName;
10
+        this.emailAddress = emailAddress;
11
+    }
12
+
13
+    public Payee() {
14
+    }
15
+
7 16
     public String getFamilyName() {
8 17
         return familyName;
9 18
     }
@@ -30,4 +39,9 @@ public class Payee {
30 39
     // ... and a bunch more hidden stuff: for testing purposes only
31 40
 
32 41
 
42
+    @Override
43
+    public boolean equals(Object obj) {
44
+        Payee p = (Payee) obj;
45
+        return (this.emailAddress.equalsIgnoreCase(p.emailAddress));
46
+    }
33 47
 }

+ 6
- 2
Checkbook/src/main/java/Transaction.java Wyświetl plik

@@ -1,9 +1,13 @@
1
+
1 2
 import java.time.LocalDate;
3
+import java.util.concurrent.ThreadLocalRandom;
2 4
 import java.util.concurrent.atomic.AtomicReference;
3 5
 
4 6
 public class Transaction {
5
-    private final AtomicReference<Integer> id = new AtomicReference<Integer>();
6
-    private final AtomicReference<LocalDate> date = new AtomicReference<LocalDate>();
7
+//    private final AtomicReference<Integer> id = new AtomicReference<Integer>
8
+//            (this.id.getAndAccumulate(1, (previous, x) -> (previous + x)));
9
+    private final AtomicReference<Integer> id = new AtomicReference<Integer>(ThreadLocalRandom.current().nextInt(Integer.MAX_VALUE));
10
+    private final AtomicReference<LocalDate> date = new AtomicReference<LocalDate>(LocalDate.now());
7 11
     private String memo;
8 12
     private Payee payee;
9 13
     private TransactionType typee; // Credit (reduces the checkbook), Debit (increases the checkbook)

+ 264
- 3
Checkbook/src/test/java/CheckbookTest.java Wyświetl plik

@@ -1,12 +1,273 @@
1
+import org.junit.Test;
2
+
3
+import java.time.LocalDate;
4
+import java.util.NoSuchElementException;
5
+
1 6
 import static org.junit.Assert.*;
2 7
 
3 8
 public class CheckbookTest {
9
+    private Checkbook checkbook, checkbookWithDefault, checkbookWithOwner;
10
+    private Payee p1, p2, p3;
11
+    private Transaction t1, t2, t3;
12
+    private final double cashAmount = 500.00;
13
+    private final double t2Amount = 100.00;
14
+    private final double t3Amount = 50.00;
15
+    private final double DELTA = 0.0;
4 16
 
5 17
     @org.junit.Before
6
-    public void setUp() throws Exception {
18
+    public void setUp(){
19
+
20
+        p1 = new Payee("Bear", "Luna", "luba@gmail.com");
21
+        p2 = new Payee("Bear", "Rocco", "roba@gmail.com");
22
+        p3 = new Payee("Fish", "Salmon", "salmonBear@gmail.com");
23
+
24
+        t1 = new Transaction("ZC Fund", p1, TransactionType.CREDIT, cashAmount);
25
+        t2 = new Transaction("Allowance", p3, TransactionType.DEBIT, t2Amount);
26
+        t3 = new Transaction("Food", p2, TransactionType.CREDIT, t3Amount);
27
+
28
+        checkbook = new Checkbook(t1, t2, t3);
29
+        checkbookWithDefault = new Checkbook(t2Amount);
30
+        checkbookWithOwner = new Checkbook(p1, t3Amount);
31
+
32
+    }
33
+
34
+    @Test
35
+    public void testSizeVarConstructor() {
36
+        int expectSizeInitial = 3;
37
+        assertEquals(expectSizeInitial, checkbook.size());
38
+
39
+        expectSizeInitial = 1;
40
+        assertEquals(expectSizeInitial, checkbookWithDefault.size());
41
+        assertEquals(expectSizeInitial, checkbookWithOwner.size());
42
+    }
43
+
44
+    @Test
45
+    public void testSizeRemove() {
46
+        int expectedSizeRemove = 2;
47
+
48
+        checkbook.remove(t1);
49
+        assertEquals(expectedSizeRemove, checkbook.size());
50
+    }
51
+
52
+    @Test
53
+    public void testSizeCashAmountConstructor() {
54
+        Transaction t = new Transaction("new", p2, TransactionType.CREDIT, 2.00);
55
+        int expectedSizeAdd = 2;
56
+
57
+        checkbookWithDefault.add(t);
58
+        checkbookWithOwner.add(t);
59
+
60
+        assertEquals(expectedSizeAdd, checkbookWithDefault.size());
61
+        assertEquals(expectedSizeAdd,checkbookWithOwner.size());
62
+
63
+        expectedSizeAdd = 4;
64
+        checkbook.add(t);
65
+
66
+        assertEquals(expectedSizeAdd, checkbook.size());
67
+    }
68
+
69
+    @Test
70
+    public void testIsEmptyTrueDefault() {
71
+        Checkbook emptyCB = new Checkbook();
72
+        assertTrue(emptyCB.isEmpty());
73
+    }
74
+
75
+    @Test
76
+    public void testIsEmptyFalse() {
77
+        assertFalse(checkbook.isEmpty());
78
+        assertFalse(checkbookWithOwner.isEmpty());
79
+        assertFalse(checkbookWithDefault.isEmpty());
80
+    }
81
+
82
+    @Test
83
+    public void testIsEmptyRemove() {
84
+        checkbook.remove(t1);
85
+        checkbook.remove(t2);
86
+        checkbook.remove(t3);
87
+
88
+        assertTrue(checkbook.isEmpty());
89
+    }
90
+
91
+    @Test
92
+    public void testContainsTrue() {
93
+        assertTrue(checkbook.contains(t1));
94
+
95
+        checkbookWithDefault.add(t1);
96
+        assertTrue(checkbookWithDefault.contains(t1));
97
+
98
+        checkbookWithOwner.add(t3);
99
+        assertTrue(checkbookWithOwner.contains(t3));
100
+    }
101
+
102
+    @Test
103
+    public void testContainsFalse() {
104
+        checkbook.remove(t1);
105
+        assertFalse(checkbook.contains(t1));
106
+
107
+        assertFalse(checkbookWithDefault.contains(t1));
108
+        assertFalse(checkbookWithDefault.contains(t3));
109
+    }
110
+
111
+    @Test
112
+    public void testContains() {
113
+
114
+        checkbookWithOwner.add(t1);
115
+        assertTrue(checkbookWithOwner.contains(t1));
116
+        assertFalse(checkbookWithOwner.contains(t2));
117
+    }
118
+
119
+    @Test
120
+    public void testIteratorFalse() {
121
+        Checkbook cb = new Checkbook();
122
+        assertFalse(cb.iterator().hasNext());
123
+
124
+        assertTrue(checkbook.iterator().hasNext());
125
+        assertTrue(checkbookWithDefault.iterator().hasNext());
126
+        assertTrue(checkbookWithOwner.iterator().hasNext());
127
+    }
128
+
129
+    @Test(expected = NoSuchElementException.class)
130
+    public void testIteratorException() {
131
+        Checkbook cb = new Checkbook();
132
+        cb.iterator().next();
7 133
     }
8 134
 
9
-    @org.junit.After
10
-    public void tearDown() throws Exception {
135
+    @Test
136
+    public void testIteratorTrueFalseFalse() {
137
+        assertTrue(checkbook.iterator().hasNext());
138
+        checkbook.remove(t1);
139
+        checkbook.remove(t2);
140
+        checkbook.remove(t3);
141
+
142
+        assertFalse(checkbook.iterator().hasNext());
143
+        assertFalse(checkbook.iterator().hasNext());
144
+    }
145
+
146
+    @Test
147
+    public void testToArray() {
148
+        Transaction[] arrEx = {t1, t2, t3};
149
+        assertEquals(arrEx,checkbook.toArray());
150
+    }
151
+
152
+    @Test
153
+    public void testToArrayFail() {
154
+        Transaction[] arrUnEx = {};
155
+        assertFalse(arrUnEx.equals(checkbook.toArray()));
156
+    }
157
+
158
+    @Test
159
+    public void testToArrayOtherConstructors() {
160
+        Transaction t1 = checkbookWithDefault.getCheckbook().get(0);
161
+        Transaction[] arr = {t1};
162
+
163
+        assertEquals(arr, checkbookWithDefault.toArray());
164
+
165
+        t1 = checkbookWithOwner.getCheckbook().get(0);
166
+        Transaction[] arr2 = {t1};
167
+        assertEquals(arr2, checkbookWithOwner.toArray());
168
+    }
169
+
170
+    @Test
171
+    public void testToArrayV2() {
172
+        Transaction[] arrEx = {t1, t2, t3};
173
+
174
+        assertEquals(arrEx,checkbook.toArray(arrEx));
175
+    }
176
+
177
+    @Test
178
+    public void testToArrayFailV2() {
179
+        Transaction[] arrUnEx = {t1, t2};
180
+        Transaction[] arr = {t1};
181
+        assertFalse(arr.equals(checkbook.toArray(arrUnEx)));
182
+    }
183
+
184
+    @Test
185
+    public void testToArrayOtherConstructorsV2() {
186
+        Transaction[] arr = {t1};
187
+        assertEquals(arr, checkbookWithDefault.toArray(arr));
188
+
189
+        Transaction[] arr2 = {t1};
190
+        assertEquals(arr2, checkbookWithOwner.toArray(arr2));
191
+    }
192
+
193
+    @Test
194
+    public void testCheckBookValueTrue() {
195
+        double exp = -450.0;
196
+        assertEquals(exp, checkbook.checkbookValue());
197
+
198
+        exp = 50.00;
199
+        assertEquals(exp, checkbookWithOwner.checkbookValue());
200
+
201
+        exp = 100.00;
202
+        assertEquals(exp, checkbookWithDefault.checkbookValue());
203
+    }
204
+
205
+    @Test
206
+    public void checkBookValueFalse() {
207
+        double exp = 2.00;
208
+        assertFalse(exp == checkbook.checkbookValue());
209
+        assertFalse(exp == checkbookWithDefault.checkbookValue());
210
+        assertFalse(exp == checkbookWithOwner.checkbookValue());
211
+
212
+    }
213
+
214
+    @Test
215
+    public void checkBookValueAddRemove() {
216
+        checkbook.add(t1);
217
+        checkbookWithDefault.add(t1);
218
+        checkbookWithOwner.add(t1);
219
+
220
+        double expected = -950.00;
221
+        assertEquals(expected, checkbook.checkbookValue());
222
+
223
+        expected = -400.0;
224
+        assertEquals(expected, checkbookWithDefault.checkbookValue());
225
+
226
+        expected = -450.0;
227
+        assertEquals(expected, checkbookWithOwner.checkbookValue());
228
+    }
229
+
230
+    @Test
231
+    public void getTransactionsForDate() {
232
+        LocalDate date = LocalDate.of(2018, 12, 5);
233
+        String expDate = date.toString();
234
+        for (Transaction t:checkbook.getTransactionsForDate(date)
235
+             ) {
236
+            assertEquals(expDate, t.getDate().toString());
237
+        }
238
+    }
239
+
240
+    @Test
241
+    public void getTransactionsForDateNull() {
242
+        for (Transaction t:checkbook.getTransactionsForDate(LocalDate.of(2017, 8, 10))
243
+        ) {
244
+            assertNull(t);
245
+        }
246
+    }
247
+
248
+    @Test
249
+    public void getTransactionAddingNewTForDateA() {
250
+        LocalDate a = LocalDate.of(2018, 12, 05);
251
+        Transaction t = new Transaction("foo", p1, TransactionType.DEBIT, 2.00);
252
+
253
+        checkbookWithDefault.add(t);
254
+
255
+        for (Transaction ta: checkbookWithDefault.getTransactionsForDate(a)) {
256
+            assertEquals(a, ta.getDate());
257
+        }
258
+    }
259
+
260
+    @Test
261
+    public void getTransactionsForPayeeExists() {
262
+//        Transaction[] arr = {t1};
263
+//        assertEquals(arr, checkbook.getAllTransactionsForPayee(p1));
264
+//
265
+//        Transaction[] arr2 = {checkbookWithOwner.getCheckbook().get(0)};
266
+//
267
+//        System.out.println(checkbookWithOwner.getCheckbook().get(0).getPayee().getEmailAddress());
268
+//        assertEquals(arr, checkbookWithOwner.getAllTransactionsForPayee(p1));
269
+
270
+        checkbook.getCheckbook().forEach(i -> System.out.println("Transaction id: " + i.getId()));
271
+        checkbook.getCheckbook().forEach(i -> System.out.println("Repeat Transaction id: " + i.getId()));
11 272
     }
12 273
 }

+ 1
- 1
README.md Wyświetl plik

@@ -40,7 +40,7 @@ Special Constructors:
40 40
  
41 41
 PLUS (For Extra Points, 10 million extra, to be precise)
42 42
  
43
-* containsAll(Collection<Transaction> c) 
43
+* boolean containsAll(Collection<Transaction> c) 
44 44
 * boolean addAll(Collection<Transaction> c)
45 45
 * boolean removeAll(Collection<Transaction> c)
46 46
 * void clear()