From 0d24756ee09f03d7206c92f767f03cb3db4a8c85 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Mon, 23 Mar 2026 10:21:47 +0100 Subject: [PATCH 1/8] Add SaleTest.java --- src/test/java/SaleTest.java | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/test/java/SaleTest.java diff --git a/src/test/java/SaleTest.java b/src/test/java/SaleTest.java new file mode 100644 index 0000000..9d15ec7 --- /dev/null +++ b/src/test/java/SaleTest.java @@ -0,0 +1,57 @@ +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import java.math.BigDecimal; + +public class SaleTest { + Stock stock; + Share share; + Sale sale; + + @BeforeEach + void setUp(){ + this.stock = new Stock("symbol", "company", new BigDecimal(100)); + this.share = new Share(this.stock, new BigDecimal(20), new BigDecimal(80)); + this.sale = new Sale(this.share, 18); + } + + @Test + void commit_validSale_updatesPlayerState() { + + // Arrange + Player player = new Player("Jane", new BigDecimal(500)); + player.getPortfolio().addShare(this.share); + + // Act + this.sale.commit(player); + + // Assert + assertTrue(player.getTransactionArchive().getTransactions(this.sale.getWeek()).contains(this.sale)); + assertFalse(player.getPortfolio().contains(this.share)); + assertTrue(this.sale.isCommitted()); + } + + @Test + void commit_alreadyCommitted_noAction() { + + // Arrange + Player player = new Player("Jane", new BigDecimal(500)); + player.getPortfolio().addShare(this.share); + this.sale.commit(player); + BigDecimal moneyAfterFirstCommit = player.getMoney(); + + // Act + this.sale.commit(player); + + // Assert + assertEquals(moneyAfterFirstCommit, player.getMoney()); + assertEquals(1, player.getTransactionArchive().getTransactions(this.sale.getWeek()).size()); + assertTrue(this.sale.isCommitted()); + } + + +} From f19b43a916176415b4ab097a5df390db2e41c207 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Mar 2026 17:53:56 +0100 Subject: [PATCH 2/8] Updated classes test --- target/test-classes/ExchangeTest.class | Bin 0 -> 1934 bytes target/test-classes/PortfolioTest.class | Bin 0 -> 2552 bytes target/test-classes/ShareTest.class | Bin 0 -> 2110 bytes target/test-classes/StockTest.class | Bin 0 -> 1361 bytes 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 target/test-classes/ExchangeTest.class create mode 100644 target/test-classes/PortfolioTest.class create mode 100644 target/test-classes/ShareTest.class create mode 100644 target/test-classes/StockTest.class diff --git a/target/test-classes/ExchangeTest.class b/target/test-classes/ExchangeTest.class new file mode 100644 index 0000000000000000000000000000000000000000..1b23237939799f6c07d062a4fb196f48c9fbd525 GIT binary patch literal 1934 zcmb7E{a4#m7=CU)NC=U!N;^=tfevWtB;EXC7T8(_SdC?_tg~}d(-KNBO=^;QtpAng zxOK=m9)I?a^7!5)rKN*&^q1u3&GWwR^St-D_wRrH_!Gbejs-**E%wVt~>i$oo6IeyP=s?%`y0Q7>s#GhRZN{)|J!b zon75~(q@=_+_5~PrB@Btpsa#r*`DSZwna$`s_itD;|}qlXWQ^}N734bQq&J^M=zLW zUcfaf<#QJ?ODqe8N2-W-DOljj1YBpB_UF;kyd$M(G#}~>qotW5Zj!V+xtxSKEO1Tl zF(lLKV0IPHF|1}jQTWK_k&29Qhyv~~yzSHKc!sGI97pS_hU-blVR8Z=;S&KL(}V{Q{#VAQSfg6n z!NG{Gz!Uk*GXbBGGx}~2u}<(paZAEIY;w8x85S><>vQ3aLRkeFag31=mm7&TZz>qV z0LPFzZ;)=gZ<5&&?0RU&O)^T#Bg5<%)`7pvZn0bGw(7RYFn5VNe1mZjB^h7fOLF|- zSvJG13lwEW+UNOHzmieL9$CsYekF6$DJV(!8WjPL8RjoGX2ErJ$2YHxeLSJVsrixZ zpE{aJGl{25rA(Dqe=6e})TnGzr{kGSmqHFhr#8=h_pOZQc)>7ExW4e|^e{NIDd+Y* z@A?B-Y*=Hs-GRj6^88efIl9|1iNW0Hl(+0wTeG@lt);sn$U}^VaP2&*Y9~f8v2gGZ-uLUgYkV?M=x!Do0_jubLD?GKO%h*82 literal 0 HcmV?d00001 diff --git a/target/test-classes/PortfolioTest.class b/target/test-classes/PortfolioTest.class new file mode 100644 index 0000000000000000000000000000000000000000..29fe8be08b048370523bc47ba887c39f97399289 GIT binary patch literal 2552 zcmbtUT~`xV6x}yWNC;6NiW(G(AGHYx0Sbr&u>mB25h$Tp(Ao}R41-A~PA0C>zVy8> zeQV$Q3;F_D*6Lb)?O*7B>FU0B!ay*s4?bk(=G;5y?7h!E_pg6`{{z5%*a7$i&aGOu z^TH~a*1Az~0?-87_w?6#qM(=ZiIwd=Bj*S-PnjjtnHFe@#Ww`BS!>4#p$RQv_|YuT zmN84la<#Z^*z5Xs!4QaKtejrh&}~!xuLU({*R06Xbw!f`oeqnqc6PG6x@~xy0@1Z< z$uWz@hFLM0CRHj~j_#ONiCL~?EIXgrs}dNWWz#Y2gkClil1DOth(L>%DTEHR1kfqq z&pKA_We}IiB9&Ur1QBI0RW28d0ImvLROE}gvzwSP^K(YdEb4_Ix=DR_Y$${-d?Y#d z5_2qbB2?C~%~C!Y-w5F%Zpafi1@1RE@$NTn zQF$tL=6MuG29F6mf4ohL$KtNIRmUtOGA3=;iWPhwz^cG`bV zvps=Z4aVRdt{!hgUIl})5x5TG z;~M4>-@b4{cn@B<+05M2CF( z`F?zaj?F_{$Q=j$`QIYBi9bmbBOEQytR2pMQ$^q7BRKex7Rgkul1uS6 zDaJ@KPKx~mI>62)IN(Fr!tg1IPd$oRkK(jP@n((U93^{-XYAfrlusJejXYQV{JIfo zF+tMOsK302G+p~mWLsHt$93)Uf4g>4lY0a8j(*`fdeYw?)#&Lb{ZYSqMJ^p+cd}WF zHhY3KOYzPsHmLL%qhfcd*aYv%Ni5UJd-U)tD)23x`vYD3BWCe4nad$vaJhNv{p6|l zJzgsBkKhFgTs1M*5{jGvjTr|~;>yo_SD5t~l{;3{jXY-ruo@|fUs+SmPx?KI{{P6U v38^3UE>(1a0xVI0N0i_(X|G@&tBP!&Th=4{z$4q|S*5LJ6@fA#`ta&sNHGZQ literal 0 HcmV?d00001 diff --git a/target/test-classes/ShareTest.class b/target/test-classes/ShareTest.class new file mode 100644 index 0000000000000000000000000000000000000000..02e06be8a2425663f90562c044edbc6385e28644 GIT binary patch literal 2110 zcmb`G+fv(B6o&t83|1V6gA;R3Ay9&iF*XULDGn*dB=jI05>sZl>Ihe3M2+pra%TDr zz3gSL`Ut%#OquBe^r1Ta*Op>PqI5c)UP#&}t^ZqV{rk_qe*Xi&Cccg#qHv>nV!8H# z-SJ|GDh!`mudRH;YS!~Fj!*5Hr!eruX*%9hg}!v=P$61weQU?jhZ_m>V?bfZbeeXh zdvehb9h8y+HAS?{Arg=e77CXcJo%-$x8~w7?KM8Rj*b1&cGeQmP-4k zfl)4&+UTVtAnN zRRPT+7sIl`YKu3I~?I`+Qn)aaA`jwGt1$bf!Gh#z)sPiHF?_%wkHaKoqvi*#%{6R1jl zn+ZI{XZ+JAe@2W3U9xz+F9EoZbyi8bQ|>fP@w%XNJQkz3GCn*T}$~l>k8u} z2=mYzLo>zPWV&lC7UA`LUrTbnG42ur;K-xmw3<@-INi1-mddT zy!K0J;1&PLtrvK*+M=}m+>who*t=^h!i#(0F>EXTTtLBN*aHP7U)bfqvn;pWosoMvjuVlc`IL9VI8uF?EiQOg*{B z$(|m~b5yy+!clfPcaFu4=tT4aOIPxf3@ySbO3qL)Lz#8ny$vKa(wZ+7Af<301*{Tg z2Ge+ehs4Y9#Gs74zj z`Z%E`DLqZ>yBd4Rmw6Anz+FL%XxJ^LBCRTg!u}kUQEMpeDa>A_c|p##h;9dLoYtM(7-);-1)n?8r4h8gw41Qncuq3b3WY(G@^M+$2L z{M#14^lALNB@-HR_bpc@wez-Es}d_!X1jJY+HBx7|8A$S+-vSg&|HNoK_fW$8^e;B An*aa+ literal 0 HcmV?d00001 diff --git a/target/test-classes/StockTest.class b/target/test-classes/StockTest.class new file mode 100644 index 0000000000000000000000000000000000000000..6cfc71c3771c51ec70c86408c829b48a8064055e GIT binary patch literal 1361 zcma))T~pIQ6o%g|g_Kf08d@lbd@0a^k^+8LoT-Z5WUynI&TzRcJ7uv=FiG`yc>|8j z_yhb=j%SmYR+&adA;egZhe3k?Z|@w#WXKAi~H(~xACx!_;8(cxCx z_|Uu%EstUBrL?5?ieaQ!YA__<*k>Y*5sYUriZO<1Q(EG<*KG>tgf}~aK{xFd?=-k0 z)j13%y>sa@Oqh{ig(2&a@O$Cac}KW4N4BVX;bYJ8WLGq#E2+F{S+>VLX2Sk>r=>)(`vP5rZ7jrYOQ7-X(%w{{0DZqcW%6v?YE*O zyS$UaBBk$@%jGoYv7{b$mmyy?`!wpFBdvC&)JP+X6_v5da2S&@ToXiYNrpGAXK)Yq z87ABRLMRkV@nvajqNrhuVKp8_)pdpAz#*hHF=~4r`#XrD+HCiynkAS~WTu^kpi#eT~#N+9Z&s zRs9AfOwgJM66iZgC%T&cCNLdl&G>mhld==E-@HNgRG-!JH<&-w7p`&V8p~#M*tx>m zcWm^PrhHoy$kY8Bq@Wb%f}29cJi*+-15##q7_04u+6S@PJHGfXIk`eP+7B7gktFFX z8PTzhS!!Nxz|28pW;rtRDAr6oh{uB<)L}?J08t?Q1p=`+puHJs_dz_3)&3t4O8hT~ bSR(<5WiqltAXW*)+JKoj5YGr)0?+>dhldXO literal 0 HcmV?d00001 From ba8f76e6e1c91f8914d11bc87868cacc7d2b1ce9 Mon Sep 17 00:00:00 2001 From: Solveig Natvig Date: Tue, 24 Mar 2026 20:19:27 +0100 Subject: [PATCH 3/8] Add PurchaseTest --- src/test/java/PurchaseTest.java | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 src/test/java/PurchaseTest.java diff --git a/src/test/java/PurchaseTest.java b/src/test/java/PurchaseTest.java new file mode 100644 index 0000000..e272e70 --- /dev/null +++ b/src/test/java/PurchaseTest.java @@ -0,0 +1,37 @@ +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.math.BigDecimal; + +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +public class PurchaseTest { + Stock stock; + Share share; + Purchase purchase; + + @BeforeEach + void setUp() { + this.stock = new Stock("symbol", "company", new BigDecimal(100)); + this.share = new Share(this.stock, new BigDecimal(20), new BigDecimal(50)); + this.purchase = new Purchase(this.share, 18); + } + + @Test + void commit_validPurchase_updatesPlayer() { + + // Arrange + Player player = new Player("Jane", new BigDecimal(500000)); + BigDecimal startingMoney = player.getMoney(); + + // Act + this.purchase.commit(player); + + // Assert + assertEquals(1, startingMoney.subtract(player.getMoney()).signum()); + + } + + + +} From 245913964e98381f967aef735fbb3ee61d2d31b1 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Mar 2026 22:40:34 +0100 Subject: [PATCH 4/8] Added new methods to Stock class --- src/main/java/Stock.java | 24 ++++++++++++++++++++++++ target/classes/Stock.class | Bin 1218 -> 2832 bytes 2 files changed, 24 insertions(+) diff --git a/src/main/java/Stock.java b/src/main/java/Stock.java index e650b01..353a7c8 100644 --- a/src/main/java/Stock.java +++ b/src/main/java/Stock.java @@ -30,4 +30,28 @@ public BigDecimal getSalesPrice() { public void addNewSalesPrice(BigDecimal price) { prices.add(price); } + + public List getHistoricalPrices() { + return new ArrayList<>(prices); // returnerer en kopi for å beskytte selve listen + } + + public BigDecimal getHighestPrice() { + return prices.stream() + .reduce(prices.get(0), BigDecimal::max); + } + + public BigDecimal getLowestPrice() { + return prices.stream() + .reduce(prices.get(0), BigDecimal::min); + } + + public BigDecimal getLatestPriceChange() { + if (prices.size() < 2) { + return BigDecimal.ZERO; + } + + BigDecimal latest = prices.get(prices.size() - 1); + BigDecimal previous = prices.get(prices.size() - 2); + return latest.subtract(previous); + } } diff --git a/target/classes/Stock.class b/target/classes/Stock.class index af494f4215bc73624297cdcbbb3c93061ab355e4..4b99ae0c6935365400b39244a56b965d52d25130 100644 GIT binary patch literal 2832 zcma)7ZF3V<6n<{fbZNSMA=J`>^4emX79t3U2GBO;rJ7PCSOi~hk|kZb*^Qe`A%63Z z_`zR*j>r^e96vk$CdcRA-K1%fGIS>0n{&^3&N&gP&0Ui}5&8kz=T0*ON4m9`8F z2#i0G+cM)ww~|>eKCw!Hz+k;uEqabXD!+SK2z=YEWCe_pSFK66NxzzJm#jK5Lcc~} zJDI#)59l>iuq&<%8onhk*L8h0{9cv8W@g#0tXL(xDxK_gh7De|T|2lga4ibbg+;l0 ztLYCkzacP?^U78dag3WVaZn&WH@`6ifkP$|7*waXOc)q6aF|Bjr>=j=_hnNxk;Ej% zmERE)2QV~@w{gtCI|8G-&dSfkahxE&ESHJdS$4>0cK(sTSl)K6JB@15^6$%{LsC+C zuOyuf>D%giWE==KZSra4wLat{S(lDgzpHo_nC#y!$*x#IA<}GOZoZc%0?{Sc5^hBK zcK}bdV!94>~8->lLzp=XUsG2Lyl?vWDdXktiMs?|W}2&Q|C`wpJc`kERPPF|}D4VCj8 zhdW_=uC8KCXRmBp^+2aqL@b$DMow)_;9IgPaCA@J(3;^0^D>*_65cRz6SvrstkoQ@ z(d-`o#|>BK<7T+hZ?4xYU$WcmFjn!Iflmbv@6O*Ia1(i~u@2uVH`KVS_L;?SG<0kG zCF-LiXP%Acy{E0dQ(TK1lvY_~(6Z(>`4+K;a1r-R6mW(!^XSIC^&|~nnApGrfdlnM zG4Q2&%beR!?fs^F(9x*~QuD2C+iOtxkwPF#TWhiwEl{%HHT;rw(^e~%)LV2;(ZzXN z_Pl_6$=aF~Yvcs|`@P4yqb-KU#Wtj5yv7ORJ$T{ga1v{{^V}tls z;7Vsp(H3{q+Ipk)n#RGm?L};wu$9j7s(dzADKglo>lK}9>-Rcz%x+`6WA^j zxV#ZCS6$cgbB?Unt-65*cdAFye!>`dDsb%eu3V^4MV#c&$GN|8q|{FcPbu{SqM!VM z;BAuU7>4!P#0V{;wEV<~0X}EbFEN&0c!5-U@dYN*e`50COH94MbozHppWVUH7#{qp zAx`rD5e+@eP?LZogc`*(#xR3%oZ@{t1jT7u)ZeTwO6Zd+E2dAgIK%V;?_w@0C&Q=m zN-%5cIS(;*1_mhOAq{PY4iU7#eBa=S?%>0HgVR_boFZabR{~6_e${6Oi+o3vcko^e zf8$~|-q8-csdh1!@j-;Q!qQcjrovk2<}a!5j#G{k8fP-}ZS!T~3b|2Se29;D7mAnF zm0pf2HI+sR{Uxq;S9iLjIL~C6;^;9+>Y<z{)jyrFjV}1V|i_CGBn2UXL+->LhnH8y;ZiRhNvBWPhe#7U_m7#6il`+4^ zo@mRvwy^jI?kgJOdg3NIu)uka_5~coB~IC8EKyw5@`*5I)bc!z;Y%&n66f?GPcb~w oIN~53zv3~5ukj6^O64+bkMRVKK2`ApeAIcDq}Bnp@eI@d18cj7XaE2J delta 61 zcmbOrc8HVf)W2Q(7#J9A8LT&Q?PrqU3eGPrN=|jl%t>Wr;0i9uPtMlMN-Rs9?98ss R$htY7eFGya0|OI-6##Eu5z7Do From d2c472aebc9e2821a33e997f5d8e686726426d05 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Mar 2026 22:46:38 +0100 Subject: [PATCH 5/8] Added new methods to Exchange class --- src/main/java/Exchange.java | 13 ++++++++++++- target/classes/Exchange.class | Bin 3923 -> 5317 bytes 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/main/java/Exchange.java b/src/main/java/Exchange.java index afbde59..14e1b2e 100644 --- a/src/main/java/Exchange.java +++ b/src/main/java/Exchange.java @@ -109,6 +109,17 @@ public void advance() { } } + public List getGainers(int limit) { // viser "vinnerne" + return stockMap.values().stream() + .sorted((stock1, stock2) -> stock2.getLatestPriceChange().compareTo(stock1.getLatestPriceChange())) + .limit(limit) + .toList(); + } - + public List getLosers(int limit) { // viser "taperne" + return stockMap.values().stream() + .sorted((stock1, stock2) -> stock1.getLatestPriceChange().compareTo(stock2.getLatestPriceChange())) + .limit(limit) + .toList(); + } } diff --git a/target/classes/Exchange.class b/target/classes/Exchange.class index dde00a72d61651ff9f9d6fc58b3ce5aab8aebf08..d086d6ea24c6eedeb48d5c07e464e1d8c66f8a90 100644 GIT binary patch delta 1369 zcmb7DSx*yT6g{^HrR|6Xi9irc3}C^BQhjVpkUn5dB_{X>KHCAtPCKx7lQaBF0j7!>{iLs9(^MK^+k)$GlBsm}Buj!_9`F-9oUjkGKhgnHl1 zlDya7V+Vs(%rh?GJT4HNQ7w@YX_-(vt0H8(g`uT`9$dm@Cng9r#U_e~Ci6+Sf~yw0 zmNw)VA>f!MBKHOqKPfh^EB{Qo+cf=^Ar>){aa{4(9jr zpTRu-;}<_ZZ_?NJOlxS|ZN2s^~!d;Hq!EA`(0zD<|#Pf z;p^eRX;{}pK?&PHbK7w= Date: Tue, 24 Mar 2026 22:48:58 +0100 Subject: [PATCH 6/8] Added getNetWorth() method to Portfolio class --- src/main/java/Portfolio.java | 10 ++++++++++ target/classes/Portfolio.class | Bin 1631 -> 2093 bytes 2 files changed, 10 insertions(+) diff --git a/src/main/java/Portfolio.java b/src/main/java/Portfolio.java index a25561f..8b8e58c 100644 --- a/src/main/java/Portfolio.java +++ b/src/main/java/Portfolio.java @@ -1,3 +1,4 @@ +import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; @@ -34,5 +35,14 @@ public List getShares(String symbol) { public boolean contains(Share share) { return shares.contains(share); } + + public BigDecimal getNetWorth() { + BigDecimal total = BigDecimal.ZERO; + for (Share share : shares) { + SaleCalculator calc = new SaleCalculator(share); + total = total.add(calc.calculateTotal()); + } + return total; + } } diff --git a/target/classes/Portfolio.class b/target/classes/Portfolio.class index 2dc14922577b214c461130e0a35c7f4139d42aae..05b636c6f03b22727ab5890da9940b65704a3c5b 100644 GIT binary patch delta 569 zcmZ{g+iDYG5XXO${o)|^VsBpPlktrR}22iT>dCHiQQYL0b3T*7;Bka(GHvE%DCw9$Ml?<& z-_48^l9BX_(J>A)&J-u8siRrVFEg3ENxzg+{mR}F%LrLL_zn(fedj)~5|not-lr-o zyk@Gp&spIsvo}ApxiHQQ6UMhoc(DIHa+t{z|G?<}?-6 zFL8k?c_n2fs>JAZ3Yr*ZXtJS3#uZO6NlIHhTC|nj)`~o-1BNj!;_7)_&Y|lFTgp;A F{R8y||HmpvJyp!u$ zeHaCSr2OR9tY(a&la<(-L?szG7^D~!8KfEX8DtpDfow+x`N=!k`Wcl$D%nGTCNnXF F0sxZ07Tf>; From 5a12603dc39a546be18a1320cf588ede6ecc0989 Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Mar 2026 23:02:41 +0100 Subject: [PATCH 7/8] Added StockFileHandler class and temporary aksjer.csv file Added aksjer.csv file for testing purposes, will be deleted later --- src/main/java/StockFileHandler.java | 50 +++++++++++++++++++++++++++++ src/main/java/aksjer.csv | 5 +++ 2 files changed, 55 insertions(+) create mode 100644 src/main/java/StockFileHandler.java create mode 100644 src/main/java/aksjer.csv diff --git a/src/main/java/StockFileHandler.java b/src/main/java/StockFileHandler.java new file mode 100644 index 0000000..0b1f720 --- /dev/null +++ b/src/main/java/StockFileHandler.java @@ -0,0 +1,50 @@ +import java.nio.file.*; +import java.io.IOException; +import java.math.BigDecimal; +import java.util.ArrayList; +import java.util.List; + +public class StockFileHandler { + + // lesing + public List loadStocksFromFile(String filename) throws IOException { + List stocks = new ArrayList<>(); + List lines = Files.readAllLines(Paths.get(filename)); + + for (String line : lines) { + line = line.trim(); + if (line.isEmpty() || line.startsWith("#")) { + continue; + } + + String[] parts = line.split(","); + if (parts.length == 3) { + String symbol = parts[0]; + String name = parts[1]; + BigDecimal price = new BigDecimal(parts[2]); + + stocks.add(new Stock(symbol, name, price)); + } + } + return stocks; // returnerer listen + } + + // lagring + public void saveStocksToFile(String filename, List stocks) throws IOException { + List lines = new ArrayList<>(); + + // header + lines.add("# Ticker,Name,Price"); + + for (Stock stock : stocks) { + // formaterer hver aksje som "SYMBOL,NAME,PRICE" + String line = String.format("%s,%s,%s", + stock.getSymbol(), + stock.getCompany(), + stock.getSalesPrice().toString()); + lines.add(line); + } + + Files.write(Paths.get(filename), lines); + } +} \ No newline at end of file diff --git a/src/main/java/aksjer.csv b/src/main/java/aksjer.csv new file mode 100644 index 0000000..8dfbf02 --- /dev/null +++ b/src/main/java/aksjer.csv @@ -0,0 +1,5 @@ +# Top 500 US Stocks by Market Cap +# Ticker,Name,Price +NVDA,Nvidia,191.27 +AAPL,Apple Inc.,276.43 +MSFT,Microsoft,404.68 \ No newline at end of file From 4a03ca52f90badb1b56ff211bb99dcd23800fe8e Mon Sep 17 00:00:00 2001 From: Elisabeth Berg Date: Tue, 24 Mar 2026 23:14:23 +0100 Subject: [PATCH 8/8] Organised classes into Model, View, Controller --- .../{ => Controller}/StockFileHandler.java | 3 +++ src/main/java/{ => Model}/Exchange.java | 1 + src/main/java/{ => Model}/Player.java | 1 + src/main/java/{ => Model}/Portfolio.java | 1 + src/main/java/{ => Model}/Purchase.java | 1 + .../java/{ => Model}/PurchaseCalculator.java | 1 + src/main/java/{ => Model}/Sale.java | 1 + src/main/java/{ => Model}/SaleCalculator.java | 1 + src/main/java/{ => Model}/Share.java | 1 + src/main/java/{ => Model}/Stock.java | 1 + src/main/java/{ => Model}/Transaction.java | 1 + .../java/{ => Model}/TransactionArchive.java | 1 + .../{ => Model}/TransactionCalculator.java | 1 + src/test/java/ExchangeTest.java | 4 ++++ src/test/java/PortfolioTest.java | 5 +++++ src/test/java/PurchaseTest.java | 5 +++++ src/test/java/SaleTest.java | 5 +++++ src/test/java/ShareTest.java | 4 ++++ src/test/java/StockTest.java | 3 +++ target/classes/Exchange.class | Bin 5317 -> 0 bytes target/classes/Portfolio.class | Bin 2093 -> 0 bytes target/classes/PurchaseCalculator.class | Bin 1148 -> 0 bytes target/classes/Share.class | Bin 748 -> 0 bytes target/classes/Stock.class | Bin 2832 -> 0 bytes target/classes/TransactionCalculator.class | Bin 253 -> 0 bytes target/test-classes/ExchangeTest.class | Bin 1934 -> 1964 bytes target/test-classes/PortfolioTest.class | Bin 2552 -> 2606 bytes target/test-classes/ShareTest.class | Bin 2110 -> 2146 bytes target/test-classes/StockTest.class | Bin 1361 -> 1373 bytes 29 files changed, 41 insertions(+) rename src/main/java/{ => Controller}/StockFileHandler.java (97%) rename src/main/java/{ => Model}/Exchange.java (99%) rename src/main/java/{ => Model}/Player.java (98%) rename src/main/java/{ => Model}/Portfolio.java (98%) rename src/main/java/{ => Model}/Purchase.java (97%) rename src/main/java/{ => Model}/PurchaseCalculator.java (98%) rename src/main/java/{ => Model}/Sale.java (97%) rename src/main/java/{ => Model}/SaleCalculator.java (98%) rename src/main/java/{ => Model}/Share.java (97%) rename src/main/java/{ => Model}/Stock.java (98%) rename src/main/java/{ => Model}/Transaction.java (97%) rename src/main/java/{ => Model}/TransactionArchive.java (98%) rename src/main/java/{ => Model}/TransactionCalculator.java (94%) delete mode 100644 target/classes/Exchange.class delete mode 100644 target/classes/Portfolio.class delete mode 100644 target/classes/PurchaseCalculator.class delete mode 100644 target/classes/Share.class delete mode 100644 target/classes/Stock.class delete mode 100644 target/classes/TransactionCalculator.class diff --git a/src/main/java/StockFileHandler.java b/src/main/java/Controller/StockFileHandler.java similarity index 97% rename from src/main/java/StockFileHandler.java rename to src/main/java/Controller/StockFileHandler.java index 0b1f720..8874232 100644 --- a/src/main/java/StockFileHandler.java +++ b/src/main/java/Controller/StockFileHandler.java @@ -1,9 +1,12 @@ +package Controller; import java.nio.file.*; import java.io.IOException; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; +import Model.Stock; + public class StockFileHandler { // lesing diff --git a/src/main/java/Exchange.java b/src/main/java/Model/Exchange.java similarity index 99% rename from src/main/java/Exchange.java rename to src/main/java/Model/Exchange.java index 14e1b2e..320fae8 100644 --- a/src/main/java/Exchange.java +++ b/src/main/java/Model/Exchange.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; import java.util.ArrayList; import java.util.HashMap; diff --git a/src/main/java/Player.java b/src/main/java/Model/Player.java similarity index 98% rename from src/main/java/Player.java rename to src/main/java/Model/Player.java index 59b4f72..e7a1e31 100644 --- a/src/main/java/Player.java +++ b/src/main/java/Model/Player.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; public class Player { diff --git a/src/main/java/Portfolio.java b/src/main/java/Model/Portfolio.java similarity index 98% rename from src/main/java/Portfolio.java rename to src/main/java/Model/Portfolio.java index 8b8e58c..05dd1de 100644 --- a/src/main/java/Portfolio.java +++ b/src/main/java/Model/Portfolio.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/Purchase.java b/src/main/java/Model/Purchase.java similarity index 97% rename from src/main/java/Purchase.java rename to src/main/java/Model/Purchase.java index 67b1049..d0b14fe 100644 --- a/src/main/java/Purchase.java +++ b/src/main/java/Model/Purchase.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; public class Purchase extends Transaction { diff --git a/src/main/java/PurchaseCalculator.java b/src/main/java/Model/PurchaseCalculator.java similarity index 98% rename from src/main/java/PurchaseCalculator.java rename to src/main/java/Model/PurchaseCalculator.java index 78f8e90..6a29413 100644 --- a/src/main/java/PurchaseCalculator.java +++ b/src/main/java/Model/PurchaseCalculator.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; public class PurchaseCalculator implements TransactionCalculator { diff --git a/src/main/java/Sale.java b/src/main/java/Model/Sale.java similarity index 97% rename from src/main/java/Sale.java rename to src/main/java/Model/Sale.java index 7a3efc2..42fee68 100644 --- a/src/main/java/Sale.java +++ b/src/main/java/Model/Sale.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; public class Sale extends Transaction { diff --git a/src/main/java/SaleCalculator.java b/src/main/java/Model/SaleCalculator.java similarity index 98% rename from src/main/java/SaleCalculator.java rename to src/main/java/Model/SaleCalculator.java index f868729..27fd394 100644 --- a/src/main/java/SaleCalculator.java +++ b/src/main/java/Model/SaleCalculator.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; public class SaleCalculator implements TransactionCalculator{ diff --git a/src/main/java/Share.java b/src/main/java/Model/Share.java similarity index 97% rename from src/main/java/Share.java rename to src/main/java/Model/Share.java index 0ab76b5..dee79dd 100644 --- a/src/main/java/Share.java +++ b/src/main/java/Model/Share.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; public class Share { diff --git a/src/main/java/Stock.java b/src/main/java/Model/Stock.java similarity index 98% rename from src/main/java/Stock.java rename to src/main/java/Model/Stock.java index 353a7c8..6916dc3 100644 --- a/src/main/java/Stock.java +++ b/src/main/java/Model/Stock.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/Transaction.java b/src/main/java/Model/Transaction.java similarity index 97% rename from src/main/java/Transaction.java rename to src/main/java/Model/Transaction.java index 18d07ed..1ef6aa8 100644 --- a/src/main/java/Transaction.java +++ b/src/main/java/Model/Transaction.java @@ -1,3 +1,4 @@ +package Model; public abstract class Transaction { private Share share; private int week; diff --git a/src/main/java/TransactionArchive.java b/src/main/java/Model/TransactionArchive.java similarity index 98% rename from src/main/java/TransactionArchive.java rename to src/main/java/Model/TransactionArchive.java index 6d86d71..92ca3c2 100644 --- a/src/main/java/TransactionArchive.java +++ b/src/main/java/Model/TransactionArchive.java @@ -1,3 +1,4 @@ +package Model; import java.util.ArrayList; import java.util.stream.Collectors; import java.util.List; diff --git a/src/main/java/TransactionCalculator.java b/src/main/java/Model/TransactionCalculator.java similarity index 94% rename from src/main/java/TransactionCalculator.java rename to src/main/java/Model/TransactionCalculator.java index 0bafc6e..560992d 100644 --- a/src/main/java/TransactionCalculator.java +++ b/src/main/java/Model/TransactionCalculator.java @@ -1,3 +1,4 @@ +package Model; import java.math.BigDecimal; public interface TransactionCalculator { diff --git a/src/test/java/ExchangeTest.java b/src/test/java/ExchangeTest.java index eb3ad47..f80b1d9 100644 --- a/src/test/java/ExchangeTest.java +++ b/src/test/java/ExchangeTest.java @@ -1,5 +1,9 @@ import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; + +import Model.Exchange; +import Model.Stock; + import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; diff --git a/src/test/java/PortfolioTest.java b/src/test/java/PortfolioTest.java index 36f7419..d921601 100644 --- a/src/test/java/PortfolioTest.java +++ b/src/test/java/PortfolioTest.java @@ -1,6 +1,11 @@ import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; + +import Model.Portfolio; +import Model.Share; +import Model.Stock; + import java.math.BigDecimal; public class PortfolioTest { diff --git a/src/test/java/PurchaseTest.java b/src/test/java/PurchaseTest.java index e272e70..2f87b39 100644 --- a/src/test/java/PurchaseTest.java +++ b/src/test/java/PurchaseTest.java @@ -5,6 +5,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import Model.Player; +import Model.Purchase; +import Model.Share; +import Model.Stock; + public class PurchaseTest { Stock stock; Share share; diff --git a/src/test/java/SaleTest.java b/src/test/java/SaleTest.java index 9d15ec7..a17d1e2 100644 --- a/src/test/java/SaleTest.java +++ b/src/test/java/SaleTest.java @@ -1,6 +1,11 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; +import Model.Player; +import Model.Sale; +import Model.Share; +import Model.Stock; + import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertFalse; import static org.junit.jupiter.api.Assertions.assertTrue; diff --git a/src/test/java/ShareTest.java b/src/test/java/ShareTest.java index ba6dc76..3d840bb 100644 --- a/src/test/java/ShareTest.java +++ b/src/test/java/ShareTest.java @@ -1,6 +1,10 @@ import static org.junit.jupiter.api.Assertions.*; import org.junit.jupiter.api.Test; + +import Model.Share; +import Model.Stock; + import java.math.BigDecimal; diff --git a/src/test/java/StockTest.java b/src/test/java/StockTest.java index 1bfcc2a..fcc0d09 100644 --- a/src/test/java/StockTest.java +++ b/src/test/java/StockTest.java @@ -1,4 +1,7 @@ import org.junit.jupiter.api.Test; + +import Model.Stock; + import static org.junit.jupiter.api.Assertions.*; import java.math.BigDecimal; diff --git a/target/classes/Exchange.class b/target/classes/Exchange.class deleted file mode 100644 index d086d6ea24c6eedeb48d5c07e464e1d8c66f8a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5317 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 Axc~qF diff --git a/target/classes/PurchaseCalculator.class b/target/classes/PurchaseCalculator.class deleted file mode 100644 index bab65f2784f8620746c271bbe1ef0ba7f9736df1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1148 zcmZ{iYflqF7=_RD!j@&YwX~pkLq*%7ZM}dOZfc2suu%+^#E-+WX@_igad&F)Uugm* z(ZnC%k21cq3~duJ&F*w|=6&Xz^Um)-KYjsN$4d(dhU|7XblM_v>%w!oo=`z(A;mCt zAijvIC;V3R{oaA=C<`MD`DQ5mNH|Ic{-A(i{LoOgL+Q8-g+^T75vpB%C0kprBRj%d zWypN)3SUX}m0@H}`ciE$*u}<9TZHavX_p~Y5B6OfNlb9qm}E#6OS?9vk+YCxNXI)l zW{@Y1Emxh(HwVuZOBWwK3Wiw@3mFZ&#Bo^@#)$C2DAGHwaEv0uFxim4`>xyBbHk?C z^T<)Q5jeuz6`|B~^D(8`GGdr%oU0gQLSEC6cEw;BdkhnVh(mVYgh3S9Sj1fmcZhIN zTpUG|D6&r1Q}WQG$STE)&HcwSL#}^dJ?L~~6j9$YxJTM*m0E3C3#jOvtJGSGq4)9Nr|IjgUvt*Pgg(VC?l^=TIE>NhLU1` zU$1O%JknfyC!pKozLq-Y*?*&~=y0$=6-j#1NYIb^NS8RFyG3J~zS|h1H>cUhcn6R# zpJKec)Wg&X3VNJ7!Tk5Q>?*ypNYR@vJ0W!2X9#hPz7(jOig6t`Xw?4}aFftXr(lj) zp*@V&c=?#n$C&To_BWa*pvfcg+IURkXZs9|=`0N6E!oj0<$hxEQ+DYT_Z#INYNT@r zWyf2lNm_PDT+ZNZlKqh6YjG5%0dE;FkHL>McxfQ+j94Jz>=2Rni3zM2;*&mc-Pp}( cf%H7>;W-WKGz`FJuIGnbpUY&}jI(+17cTwRtN;K2 diff --git a/target/classes/Share.class b/target/classes/Share.class deleted file mode 100644 index 9e7f4f908924e472e13aa53e2eed739502c26f0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 748 zcmZ`$$xZ@65Pi)I+c?NLBH}JL7#D6{Tn=hH5tm@NH)97H2hd?K@vk(In0W95{3v5} zLyVg7(*5dny{dZEAD?gU01i=3Bf*etba*JzFd3XKf8e!%_uI9LR#*5Dy$+*+f6I`r zHx$@s$lQ;3Ka$ZSL$R&}Jsx#x$FhAYeA(jx<>c;0q2J*{aT!WqFr*G-Uq(j^dzERO zcx60WZ8DfAgBxMNz^n}mc?P3WZDzqRXCsM}Li0A#$SAa6BZ~|}zApRXeAH`+@S3** z8pN#+d>%A;C{;Wq&8Q=X+M?Qove*`pw#$&MRKK0i5PkJ+zC+OtD zcqTr9BArF51zLhh$}DMTNjr}m7K!yHdX%t45mnNCnMSH}LL=4Npq|TEnRc$xt+JBd u3!EnclU6BBI=ZwyNtl*qSj8GKYV4n4_pi7RD_)Nk7ygP%vEmIq-{u!HEPSH? diff --git a/target/classes/Stock.class b/target/classes/Stock.class deleted file mode 100644 index 4b99ae0c6935365400b39244a56b965d52d25130..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2832 zcma)7ZF3V<6n<{fbZNSMA=J`>^4emX79t3U2GBO;rJ7PCSOi~hk|kZb*^Qe`A%63Z z_`zR*j>r^e96vk$CdcRA-K1%fGIS>0n{&^3&N&gP&0Ui}5&8kz=T0*ON4m9`8F z2#i0G+cM)ww~|>eKCw!Hz+k;uEqabXD!+SK2z=YEWCe_pSFK66NxzzJm#jK5Lcc~} zJDI#)59l>iuq&<%8onhk*L8h0{9cv8W@g#0tXL(xDxK_gh7De|T|2lga4ibbg+;l0 ztLYCkzacP?^U78dag3WVaZn&WH@`6ifkP$|7*waXOc)q6aF|Bjr>=j=_hnNxk;Ej% zmERE)2QV~@w{gtCI|8G-&dSfkahxE&ESHJdS$4>0cK(sTSl)K6JB@15^6$%{LsC+C zuOyuf>D%giWE==KZSra4wLat{S(lDgzpHo_nC#y!$*x#IA<}GOZoZc%0?{Sc5^hBK zcK}bdV!94>~8->lLzp=XUsG2Lyl?vWDdXktiMs?|W}2&Q|C`wpJc`kERPPF|}D4VCj8 zhdW_=uC8KCXRmBp^+2aqL@b$DMow)_;9IgPaCA@J(3;^0^D>*_65cRz6SvrstkoQ@ z(d-`o#|>BK<7T+hZ?4xYU$WcmFjn!Iflmbv@6O*Ia1(i~u@2uVH`KVS_L;?SG<0kG zCF-LiXP%Acy{E0dQ(TK1lvY_~(6Z(>`4+K;a1r-R6mW(!^XSIC^&|~nnApGrfdlnM zG4Q2&%beR!?fs^F(9x*~QuD2C+iOtxkwPF#TWhiwEl{%HHT;rw(^e~%)LV2;(ZzXN z_Pl_6$=aF~Yvcs|`@P4yqb-KU#Wtj5yv7ORJ$T{ga1v{{^V}tls z;7Vsp(H3{q+Ipk)n#RGm?L};wu$9j7s(dzADKglo>lK}9>-Rcz%x+`6WA^j zxV#ZCS6$cgbB?Unt-65*cdAFye!>`dDsb%eu3V^4MV#c&$GN|8q|{FcPbu{SqM!VM z;BAuU7>4!P#0V{;wEV<~0X}EbFEN&0c!5-U@dYN*e`50COH94MbozHppWVUH7#{qp zAx`rD5e+@eP?LZogc`*(#xR3%oZ@{t1jT7u)ZeTwO6Zd+E2dAgIK%V;?_w@0C&Q=m zN-%5cIS(;*1_mhOAq{PY4iU7#eBa=S?%>0HgVR_boFZabR{~6_e${6Oi+o3vcko^e zf8$~|-q8-csdh1!@j-;Q!qQcjrovk2<}a!5j#G{k8fP-}ZS!T~3b|2Se29;D7mAnF zm0pf2HI+sR{Uxq;S9iLjIL~C6;^;9+>Y<z{)jyrFjV}1V|i_CGBn2UXL+->LhnH8y;ZiRhNvBWPhe#7U_m7#6il`+4^ zo@mRvwy^jI?kgJOdg3NIu)uka_5~coB~IC8EKyw5@`*5I)bc!z;Y%&n66f?GPcb~w oIN~53zv3~5ukj6^O64+bkMRVKK2`ApeAIcDq}Bnp@eI@d18cj7XaE2J diff --git a/target/classes/TransactionCalculator.class b/target/classes/TransactionCalculator.class deleted file mode 100644 index 47f318a458bbba5cf97cd0faa611971485ea80ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmZvXK?=e!5JmrJwOWe^B8Vr@jXi+4QPGXy!d_quK_h7cO)8$vg$M9ZVw55-+{_<_ z$Nc{v&)Xfq9C3&mVUQM_TNX~4e92mrnw=>^1cct1FPv!3kIC+EmckLbqC(`RFxC== z#uZLFfPg diff --git a/target/test-classes/ExchangeTest.class b/target/test-classes/ExchangeTest.class index 1b23237939799f6c07d062a4fb196f48c9fbd525..69ecbefc1a6f274da23efc9dfb903a0546718f72 100644 GIT binary patch delta 175 zcmeC|r0oDbQq6`uYVhjdA(t<&f!I?pd!H+?PA%;PA@=4Y< zUPT5j24w~j1{DT12Gz+iY$cqUKoM=Ah|c7jK%N1RX9VOK19^t*84L^zObnR-48AB( delta 160 zcmZ3(-^V|}UYyIvwIVqqF)uyUnvsDuv7jI)m63tnXJXQBM%K+Lj5dsn9FxOi%V>LHZwD8F)?yZ)?-~DDaatfAjDw6Ai`k5Aj;s(AjaSa6p3Mw zocx@%jaQa|i$NYJr@)}bpg6gTt%Oq*D54G&(U|-l$kPGx^ng5lAkUCJgMop8i6IjJ D80aCq diff --git a/target/test-classes/PortfolioTest.class b/target/test-classes/PortfolioTest.class index 29fe8be08b048370523bc47ba887c39f97399289..9be31bceb298913e26cf5eed9840f892c234ed1a 100644 GIT binary patch delta 365 zcmYk0OD_Xq7=_Q*7}IK~GGi(+npWx(mk~jvhKgH}sW!#NZbHS>BoplrOM9D%Z{c5* zWR{XH?JXq!gN>!7myXNs&3T@4@_zI-B=0R1D>%m$TPry=_r$R+rvq_BM92)$7P(~& zF*x}>OLys`Mhon@&e0k7n8M$g7U}+pc{=3i@xb|=U1SjIUj>HF|NZa$)T~wha{n=u zXNjayH7`x=!nJJ8u=pfM~ z(G-?3gbie{gJG00!XMh7)NwK<$(SNznv5Ch&!UJq9Ae(*qRhs!r0Aq95zJv1E2v@> m=UBrP&0Qmp8*JeY+x$8FDi_Eul3k*~G7auy69>E*$$kRPf>m<> delta 303 zcmX}my-LGi6b9h;v?eiWMQjZvVnjPgYmum+me!x5^@sG+mb$s6qL^9;wox42T?*ge zU3AGVxCq{XSKv}d2S-mGoX+8Wp95zw{gdtwO}!Cx!>gd<2L`5~YcL6lOwxc9`AXUN zMo!2ts>KbSl~}Np5dQ~dmc1~zxFKlbY_$9(*IxH>ltjbW5v45A_U=9BF7!K&@O$Bw zh}^LZkt$nC-!d?cBy3Eeh)L}72UVmXkd_Jc#m;bRaXZ89EOs!51I)w40-DImPxZ}S zWRYW$XHj6W%=ZrJSiw0~qj$}u{5q3OCPl2Fgj1B!#x`ylKcIp~?BNOfct%xf`iFVU S+GSm1f5N7YLp0>KUit-H?mgE4 diff --git a/target/test-classes/ShareTest.class b/target/test-classes/ShareTest.class index 02e06be8a2425663f90562c044edbc6385e28644..0c78c049703a01bcab74ac0e8ab5fe5fc00f19d0 100644 GIT binary patch delta 231 zcmdld@JL|7BX(}z{FKxj{fUqFD?*vU8Hq)yTnwrV8axcF44RA#HX1${6KAkARMpu}K5xtP6=*9EA~6{yag!GXbJG9QNl02IM72><{9 delta 195 zcmaDPuuovZBSzMVFZYYG24^G|rE)Q-GHCEHurg>eGMH)jOg_mtjfvf7aypX>h}z7g z!@{Yd>9hGIQw}2|`{Xc|I#C`5Q3hTHc?LcPO$Gr5QwBi>D+Zy-FIkoeiUVaN7z`Ms zfTA)$QQ650SeFPY0Y#O8qN+eqbp|H}jmcc>#*;hP3I%n6GI~H61E7o%P{tT2)52-N fAPv;3#9%#nI(r|l15k}4P=zyt1B1(CBMt)q^JgU0 diff --git a/target/test-classes/StockTest.class b/target/test-classes/StockTest.class index 6cfc71c3771c51ec70c86408c829b48a8064055e..1a942861ec9e00b95e7616525ed76e5f340df15e 100644 GIT binary patch delta 109 zcmcb}b(d?xeRgi&{FKxj{f!TT7&&--Ae_l2Oz#-ECMz>%a`G{VGVn8~G6+nb$09#@ z3v(i`2v9_nL5V?(!H7Y8vNo&yWJi_|PHCW+3{agcP+bGBB3OkIgECN!3Q&z202nA2 AD*ylh delta 101 zcmcc1b&+ereMZ)e&w?14*nK8DFuh}BpRCWE$;r(i%D}^*%D_8$A#($-Adn}-pu`}| xV8kFYS&yZdQvxU=36z%t%F9na$&$z`2NaP9s!;%{Q3R@yXSZNrU|?df1OR?}5`6#w