AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DUnit Vererbung/falsche Methode aufgerufen

Ein Thema von TurboMagic · begonnen am 12. Feb 2023 · letzter Beitrag vom 13. Feb 2023
Antwort Antwort
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#1

DUnit Vererbung/falsche Methode aufgerufen

  Alt 12. Feb 2023, 17:57
Hallo,

ich versuche gerade ein paar Unit Test Fehler in der DEC zu beheben.
Nach Korrektur eines Fehlers in den Testdaten bin ich jetzt über ein anderes
mich verwirrendes Problem gestoßen.

Es gibt im Unit Test eine Klasse TestTHash_Keccak_Base, von der erben alle
Keccak Hash Testklassen. Die TestTHash_Keccak_Base wiederrum erbt von
TestTHash_SHA3_Base, die wiederum von noch einer anderen erbt, was hier aber
keine Rolle spielt.

In der TestTHash_SHA3_Base gibt es eine strict protected Methode LoadTestDataFile.
In der Methode wird eine Methode AddLastByteForKeccakTest aufgerufen. Diese ist
als Virtual deklariert. Darf also überschrieben werden und liefert in der Klasse
TestTHash_SHA3_Base nur das wieder zurück, was man als Parameter rein gesteckt hat.

In der TestTHash_Keccak_Base soll die aber mit dem übergebenen Parameter einiges
anstellen und dementsprechend käme auch was anderes zurück. In dieser Klasse ist
die Methode als override gekennzeichnet.

Nur: führe ich das aus, lande ich eindeutig in der Implementierung aus der Klasse
TestTHash_SHA3_Base statt der aus TestTHash_Keccak_Base .

Hat irgendwer eine Idee warum?

Hier der Code:
https://github.com/MHumm/DelphiEncry...ECHashSHA3.pas

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#2

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 12. Feb 2023, 18:23
Bei welchem der Tests passiert das denn?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#3

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 12. Feb 2023, 19:18
Sorry, hab's ich vergessen zu schreiben:
TestTHash_Keccak_224 TestCalcUnicodeString

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 12. Feb 2023, 19:34
Also wenn ich diesen Test ausführe, lande ich in der Methode aus TestTHash_Keccak_Base. Die Base-Methode wird nie ausgeführt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#5

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 12. Feb 2023, 19:46
Hallo,

jetzt mal noch etwas ausführlicher:

Ich lande beim Ausführen von TestTHash_Keccak_224.TestCalcUnicodeString
in der TestTHash_SHA3_Base.LoadTestDataFile. Soweit noch so gut.
Nur der AddLastByteForKeccakTest dort drin springt nicht nach
TestTHash_Keccak_Base.AddLastByteForKeccakTest sondern nach
TestTHash_SHA3_Base.AddLastByteForKeccakTest

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 13. Feb 2023, 11:37
Und das ist genau der eingecheckte Stand? Ich hatte es mit 10.4 und 11 getestet. Anbei der Screenshot von gestern.
Ich habe nur den einen Test durchlaufen lassen und auf TestTHash_SHA3_Base.AddLastByteForKeccakTest einen Haltepunkt gesetzt. Bei mir wird der nicht erreicht, dafür der in TestTHash_Keccak_Base.

2023-02-12.jpg
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#7

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 13. Feb 2023, 12:23
Moment! Mir dämmert was:
Im SetUp der Keccak_224 Test Klasse werden auch ein paar wenige Testdaten
per Code hinzugefügt, also nicht aus der Datei geladen. Da wird die richtige
Methode aufgerufen, der Breakpoint sollte also erst dann gesetzt werden,
wenn SetUp durch ist bzw. einen breakpoint an der Stelle in der Datei Laden
Methode aus der Basis Klasse setzen wo die Methode aufgerufen wird, die falsch
aufgerufen wird.

Sprich: die wird nur dort falsch aufgerufen wo das Laden der Daten aus der Datei
stattfindet. Beim Definieren der Testdaten per Code wird die richtige Variante
aufgerufen.

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 13. Feb 2023, 14:19
Wie schon geschrieben: Ich komme gar nicht an der falschen Methode an, wenn ich nur den einen Test durchführe, und ich hatte mich außerdem auch in DUnit bis zum Ausführen der Methode durch debuggt.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.453 Beiträge
 
Delphi 12 Athens
 
#9

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 13. Feb 2023, 15:43
Ich habe das nun auch mal ausprobiert und komme zu dem gleichen Ergebnis wie Sebastian: Es funktioniert wie erwartet.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#10

AW: DUnit Vererbung/falsche Methode aufgerufen

  Alt 13. Feb 2023, 22:41
Habe es auch nochmal getestet und ja, ich hab' da beim Ausführen was übersehen.
Jetzt muss ich die Algorithmen fixen, seufz!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:02 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz