From 2426088a05a74e2f4986f99aac5a8c05e61b6c56 Mon Sep 17 00:00:00 2001
From: Muhamed <Muhamedalici@hotmail.de>
Date: Sun, 25 May 2025 22:52:08 +0200
Subject: [PATCH] =?UTF-8?q?feat:=20F=C3=BCge=20einen=20neuen=20Test=20f?=
=?UTF-8?q?=C3=BCr=20das=20Singleton-Pattern=20der=20Mars-Klasse=20hinzu?=
=?UTF-8?q?=20und=20behebe=20fehlerhafte=20Testf=C3=A4lle?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.aider.chat.history.md | 111 +++++++++++++++++++++++++++
.aider.input.history | 27 +++++++
.aider.tags.cache.v4/cache.db-wal | Bin 1573872 -> 1907592 bytes
__pycache__/Unittest.cpython-312.pyc | Bin 21971 -> 22901 bytes
__pycache__/mars.cpython-312.pyc | Bin 3070 -> 3070 bytes
5 files changed, 138 insertions(+)
diff --git a/.aider.chat.history.md b/.aider.chat.history.md
index 746890c..94722ea 100644
--- a/.aider.chat.history.md
+++ b/.aider.chat.history.md
@@ -9964,3 +9964,114 @@ This JSON object represents a commit message with a type of "feat" and a descrip
>
>
> ^C again to exit
+
+#### Update the Unittest.py and implement a new test for the singelton pattern from mars.py
+
+Ich werde einen neuen Test für das Singleton-Pattern der Mars-Klasse hinzufügen. Dieser Test sollte überprüfen, ob mehrere Instanziierungen der Mars-Klasse tatsächlich die gleiche Instanz zurückgeben.
+
+Unittest.py
+```python
+<<<<<<< SEARCH
+ def test_observe_returns_empty_list(self):
+ real_plateau = Plateau(3, 3)
+ telescope = Telescope(real_plateau)
+ telescope.plateau.grid = None # Setze das Grid auf None
+ observed_grid = telescope.observe()
+ self.assertEqual(observed_grid, [])
+ print("Test observe_returns_empty_list erfolgreich!")
+
+
+if __name__ == '__main__':
+=======
+ def test_observe_returns_empty_list(self):
+ real_plateau = Plateau(3, 3)
+ telescope = Telescope(real_plateau)
+ telescope.plateau.grid = None # Setze das Grid auf None
+ observed_grid = telescope.observe()
+ self.assertEqual(observed_grid, [])
+ print("Test observe_returns_empty_list erfolgreich!")
+
+ def test_mars_singleton(self):
+ """
+ Test ob Mars wirklich als Singleton implementiert ist.
+ Überprüft ob mehrere Instanziierungen die gleiche Instanz zurückgeben.
+ """
+ plateau1 = Plateau(5, 5)
+ plateau2 = Plateau(3, 3)
+
+ # Erstelle zwei Mars-Instanzen
+ mars1 = Mars(plateau1)
+ mars2 = Mars(plateau2)
+
+ # Überprüfe ob es sich um die gleiche Instanz handelt
+ self.assertIs(mars1, mars2, "Mars-Instanzen sollten identisch sein (Singleton)")
+
+ # Überprüfe ob das Plateau der ersten Instanzierung beibehalten wurde
+ self.assertEqual(mars1.plateau.width, 5)
+ self.assertEqual(mars2.plateau.width, 5)
+
+
+if __name__ == '__main__':
+>>>>>>> REPLACE
+```
+
+Dieser neue Test:
+1. Erstellt zwei verschiedene Plateaus
+2. Versucht zwei Mars-Instanzen zu erstellen
+3. Prüft ob beide Instanzen identisch sind (Singleton-Verhalten)
+4. Prüft ob das erste Plateau beibehalten wurde
+
+Führen Sie die Tests aus mit:
+```cmd
+python -m unittest Unittest.py -v
+```
+
+Der neue Test sollte das Singleton-Verhalten der Mars-Klasse bestätigen.
+
+> Tokens: 27k sent, 527 received. Cost: $0.09 message, $0.79 session.
+> Applied edit to Unittest.py
+> Commit 26363e3 feat: Füge einen neuen Test für das Singleton-Pattern der Mars-Klasse hinzu.
+> python -m unittest Unittest.py -v
+> Run shell command? (Y)es/(N)o/(D)on't ask again [Yes]: y
+> Running python -m unittest Unittest.py -v
+> Add command output to the chat? (Y)es/(N)o/(D)on't ask again [Yes]: y
+> Added 66 lines of output to the chat.
+> You can use /undo to undo and discard each aider commit.
+
+#### can you please fix the failing test
+
+Ich werde den fehlschlagenden Test reparieren. Der Fehler liegt darin, dass wir versuchen auf das Attribut `width` zuzugreifen, aber in der Plateau-Klasse verwenden wir stattdessen `size_x`. Hier ist die Korrektur:
+
+Unittest.py
+```python
+<<<<<<< SEARCH
+ # Überprüfe ob das Plateau der ersten Instanzierung beibehalten wurde
+ self.assertEqual(mars1.plateau.width, 5)
+ self.assertEqual(mars2.plateau.width, 5)
+=======
+ # Überprüfe ob das Plateau der ersten Instanzierung beibehalten wurde
+ self.assertEqual(mars1.plateau.size_x, 5)
+ self.assertEqual(mars2.plateau.size_x, 5)
+>>>>>>> REPLACE
+```
+
+Führen Sie die Tests erneut aus mit:
+```cmd
+python -m unittest Unittest.py -v
+```
+
+Die Tests sollten jetzt alle erfolgreich durchlaufen.
+
+> Tokens: 29k sent, 213 received. Cost: $0.09 message, $0.89 session.
+> Applied edit to Unittest.py
+> Commit 564a782 ```json
+{
+ "commit_message": "fix: Fehlerbehebung in der Benutzeroberfläche"
+}
+```
+> python -m unittest Unittest.py -v
+> Run shell command? (Y)es/(N)o/(D)on't ask again [Yes]: y
+> Running python -m unittest Unittest.py -v
+>
+>
+> ^C again to exit
diff --git a/.aider.input.history b/.aider.input.history
index a4903fe..b91ad8c 100644
--- a/.aider.input.history
+++ b/.aider.input.history
@@ -870,3 +870,30 @@
# 2025-05-24 19:36:45.317709
+es schagen immernoch 2 tests fehl, behebe diese 2 fehler
+
+# 2025-05-25 22:37:15.510250
++Update the Unittest.py and implement a new test for the singelton pattern from mars.py
+
+# 2025-05-25 22:37:32.464521
++y
+
+# 2025-05-25 22:37:32.472589
++/run python -m unittest Unittest.py -v
+
+# 2025-05-25 22:37:32.472589
++/run python -m unittest Unittest.py -v
+
+# 2025-05-25 22:43:57.989623
++y
+
+# 2025-05-25 22:44:10.449294
++can you please fix the failing test
+
+# 2025-05-25 22:44:26.378899
++y
+
+# 2025-05-25 22:44:26.386728
++/run python -m unittest Unittest.py -v
+
+# 2025-05-25 22:44:26.386728
++/run python -m unittest Unittest.py -v
diff --git a/.aider.tags.cache.v4/cache.db-wal b/.aider.tags.cache.v4/cache.db-wal
index 91d513c253eeedaf83abc69120a1753817d72d98..7992b02280aa6cd864b6958e9e0cbfac0d7755fa 100644
GIT binary patch
delta 24803
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
QbPn}$pCAu7_aWtD0E;~2g#Z8m
delta 57
zcmeC!Uh<(mp`nGbg{g(Pg{6hHg{_6Xg`<VDg{y_Tg{OtLg|CIbMW98nMW{u%MWjWv
MMXW`9i^K<J06}FEx&QzG
diff --git a/__pycache__/Unittest.cpython-312.pyc b/__pycache__/Unittest.cpython-312.pyc
index f33339448a8d7fc3bd69b3d71874450576363de6..1af38f4749fd023e053cce54075d26c16a174b37 100644
GIT binary patch
delta 1428
zcmcb-n(^x<M!wU$yj%<n3=FD`#u;Y=Hu708GBGhu_F(+Om7>|g5T#wIrK!EygXyH`
z<N~P*ft5@znHU%tiaZ$@7;Z5IIc=UNVJI+pv4GU%ml`gURkXz?``W2Zo-ggZd4oD1
z<L2F36PS=hRVFFQZ@!?f!?=06UI`Op@#Kv{B9j#iV;RdPFHn{P%S=9D#1E0!{KiNa
zrslOC|KxB};mu~Ie;A>%?&eci*cw4@soMO|`UoS0oj&=YwdCd_wxUdojhk=TUuQPx
zWnf^?<S3E=sT2bdLLj09L@0xZeh@JML`(z`lQutezRbwo17d@<vQN$z5fwmJH96c<
zezJ+1z-D2$4o0><km^aB7rJkNv%@`SGBQrs{L$+bqvB$a6PSxY)GbD3Fs%vUg4soj
zC;#yY;03usleI`1WY&Vsk-mmZY#<#~dXpJ_MJGoD@J!z5ucE#bB&`ApeU|j1%#<RK
zu9YlMT_8D85V3soAAepZ(N!QeTnAWf(dx-^LHi_<89{Ll#jFer49pA+44>r~CkqD3
zI>Y5sm{OQlgW{WkfuWYE1f&M6rG{}eR81{2k|+~glx1?Dmbd_O4ND61YN#$ohMLI-
zL`9ium?tNii7;hxO+LUTI{7v)&*Vd*!b~+RsG^+pl`NX9rL!0q7`POmASAW8L?J&(
z!8fs}SfM<#C_5)JIYS{ar&u94GcP?SwIn}JAv3oiCp9-UuOu_Is6-*NxI_=G{qUTm
z)S`l-!+X-ersSq(6r~oWDtP7<mn7y@WoD)pmFA_V<|(9PrYfZ8)Td@9XTW6@s!EFv
z?@7*1PfbeALl{}a0}5b11_p*ILy)U<p@yaADHP}D<dmf5DP*RA98;W}p-`NfnWvxu
zcdDkJCR-6GY>HSwvB{BGT%1}|;#ph-irgZhD3Bmqab{I&d<8UB+~O$6Ni0cCEH#9)
zjBc^!CKeSNLMWqRP)veDt4Ic<U$`W-xFjB=BEA?FL{%!21s%le6N`!wVvdXq48`RP
z3=9nnU$_`Vq-Pk;NStij!Er}e3da1x#vmv<A!0IL2kRXH5eVZ08v`eAKW``Rgwz?K
z7gWNpa72KGu5(CS<dB#lI$w6C>~%@qi;}u43a@Y&-r(SY%ZMRKUF9$=l4D?C@YB?p
zd_SnAJ`WVAg&?97L{xx?Y7kKiBI-dz6NqR55p5u%14MLzh$$dqI*6DFB4&e#c_3mT
zh*$w4)_{n0AYvN>1H(!Nu-)MBDgqURMU(Fab25IJ{5-gX(QR@}NCnp?5jIx4&jNz1
zMw4%bl&WqAg)B>MVrE{^E|4i8r-QZM;;_lhPbtkwwJSO}xj0nMsFsD%XhOwxagB@O
n8ebSdyblgs3@khyRhO70Z?Fh9c(nUA`nLLiU}j*E0y_f$#KDZ?
delta 704
zcmeymiShDkM!wU$yj%<n3=Geij4~ehZsfCIWctG}*@N*9OQoi!)@DDZlcJLssBuqz
z#Tz@>+EhSvCDThL1_p*APX-2tTTDStMY;?O44dam7z!{ZPQIuS%lLWnL>{rp>+IAf
zFOXK5yg^QW^L$l4#?5=QCNMD-<xXCxEVo&~M4EB(eO~U(pY*Dj7)vH6nu<(rG>l~|
zN0FVZY%B_q-0W*C%*0r-InmSzs(kYb^C>KBO(2I<PtFsQ+#GGQni0ZJ2lG|!M41?y
zHd{MfXEx|#U|`VXD3SoF76TDNAfgmRD1(RzAYvkjm;@pwZ+3FI%*fUYV)sp!c9Rl7
zS1@^pr~KrpZUUQ2+&UQ9`audOZ)Wn?0B7&;oXN;IadVLOD@Mg7AlsRXK-4WpWiYJ?
z;ey#kOD4zq2JnKc*JLe{2AQ>R^DbXQCdMU`-}rl}F9V6FfC8H(y(lxK2&8Z&3sfOU
zP839}*c=<c%OtuQ#D?ntt1VhHxjtwgv!AB+<npkV`h1XzA`npqA}T>d4Tz`%5e*=s
z8AP;#h;|Us2_m{d#8eP514PUM5pzJqd=Rk+M63i6YeB?%1_p+e3`KGvwhV{>C9on8
zA<D|Yz)<{ta!Ys#qsQc*;T5c(Mc7#FCRaz4@@xS6F*h+YuW0k+KM@j)yC#c9>WOBt
aFxpM1xGt`7QC#B-1Bmw_igR*Aq$~ia1HEhj
diff --git a/__pycache__/mars.cpython-312.pyc b/__pycache__/mars.cpython-312.pyc
index 35b6b396562a5a22ce1cad19b74e24da8df6e352..9b09376962bc66dccec427b8dd8137356eef0c80 100644
GIT binary patch
delta 27
icmew-{!g6yG%qg~0|NsCmz~i@?h0l`=glq5RU80l0|wRr
delta 27
jcmew-{!g6yG%qg~0|NuYgWrZ5xht3%lQ*|8S8)IUegp`J
--
GitLab