Seite 1 von 1

task2 evaluate

Verfasst: 1. Mai 2015 22:11
von Rapha167
bei mir wird im testevaluate nicht die evaluate() methode aufgerufen, macht aus meiner sicht irgendwie keinen sinn oder?

hier der code abschnitt indem es meiner meinungn ach aufgerufen werden sollte.

Code: Alles auswählen

for(int i=0;i<testCases.length;i++)
		{
			String tcn = "Testcase "+(i+1)+": ";
			
			ml = new MathList(calculators[i]);
			ml.buildList(testCases[i]);

			
			assertEquals(tcn+"Evaluation did not finish", 1, ml.size());
			assertEquals(tcn+"Wrong result", results[i], ml.first().data());
		}

die einzige möglichkeit wie meine funktion jetzt laufen würde wäre sie in buildList aufzurufen, das ist aber nicht so gedacht oder?

ich habe nichts an den tests verändert! vermute aber das es vllt ausversehen gelöscht worden sein kann?
kann mir vllt jemand seinen abschnitt des tests hier posten oder mir verraten wie ich sonst evaluate() aufrufen kann?


danke :)
raphael

Re: task2 evaluate

Verfasst: 1. Mai 2015 22:19
von hololol2
Nach dem buildList() fehlt ein mv.evaluate();

Re: task2 evaluate

Verfasst: 2. Mai 2015 00:37
von felicis
hier sollten wir vielleicht genau sein...
In der Leerzeile nach "ml.buildList(testCases);" sollte das stehen:

Code: Alles auswählen

ml.evaluate();
felicis
PS: vll. lädst du dir mal die ganze Testdatei neu runter... es könnten ja noch andere Fehler drin sein! (Muss ich auch noch mal machen... so viel, wie ich da drin rumgepantscht habe!)

Re: task2 evaluate

Verfasst: 2. Mai 2015 01:02
von hololol2
Oh da hatte ich ein "v" statt nem "l" :roll:

Re: task2 evaluate

Verfasst: 2. Mai 2015 02:41
von sch3rvv1n
Ich denke es fehlt noch eine Funktion die aufgerufen werden soll, bevor ml.evaluate() aufgerufen wird und zwar ml.assembleNumbers(). Da es mir im Test aufgefallen war, dass die Zahlen nicht zusammengehängt werden.

Re: task2 evaluate

Verfasst: 2. Mai 2015 03:14
von Rapha167
hmm echt komisch, wie konnte das verschwinden? ich habe nichts in den tests geändert.
nunja danke,
kann mir jemand den ganzen ausschnitt schicken?
oder ist assemplenumbers wirklich nicht mit in der testfunktion?

Re: task2 evaluate

Verfasst: 2. Mai 2015 11:42
von hololol2
Die Frage war schon mehrmals hier im Forum. assembleNumbers() ist nicht im Test, du musst sie selber aufrufen

Re: task2 evaluate

Verfasst: 2. Mai 2015 12:30
von sch3rvv1n
public void testEvaluate()
{
String[] testCases = {
"3+5*6-5/10*100+2",
"3.5+5.1/17-4.7+4-2354*7/7.0-1/10",
"(33+43)*434-45/10+((10-52)*(6-100)*(0-1)+(5*(5*(5*(((5)))))))",
"42.0*24+(12686/6343*123.232-23+(43*4.0-(0-3)-(3/12.0*(6.9))))",
"8923747823478892340892304+47823748927394789*2347283479233434343434344/253728457832423423424-12312312312313123123123",
"(8923747823478892340892304+47823748927394789*2347283479233434343434344/2347283479233434343434344-12312312312313123123123)*2.3"
};

Calculator[] calculators = {
ic,
pnc,
ic,
pnc,
ic,
pnc
};

String[] results = {
"35",
"-2351.0",
"29657",
"1404.739",
"8911877936492974499711696",
"20496301785677754733877131.0"
};

for(int i=0;i<testCases.length;i++)
{
String tcn = "Testcase "+(i+1)+": ";

ml = new MathList(calculators);
ml.buildList(testCases);

//hier assembleNumbers so hinzufügen
ml.assembleNumbers();

ml.evaluate();
System.out.println(ml.size());
System.out.println(ml.first().data());
assertEquals(tcn+"Evaluation did not finish", 1, ml.size());
assertEquals(tcn+"Wrong result", results, ml.first().data());
}
}

Re: task2 evaluate

Verfasst: 2. Mai 2015 13:00
von CryNickSystems
@sch3rvv1n:
Nein - assembleNumbers() gehört nicht in den Test, wenn es dort nicht schon drin ist.
Einfach selbst aufrufen.

Re: task2 evaluate

Verfasst: 2. Mai 2015 13:37
von Rapha167
es geht ja auch nicht um assemblenumbers sonder um ml.evaluate :) das bei mri ja einscheinend gefehlt hat, wieso auch immer :D

Re: task2 evaluate

Verfasst: 2. Mai 2015 14:39
von sch3rvv1n
@CryNickSystems
du hast vollkommen Recht. Also Ich glaube nicht dass es wichtig ist, ob das erst im Test oder unter evaluate() aufgerufen wird. Die Wichtigsten sind eigentlich die anderen Methoden, die Implementiert werden müssen. :)

Re: task2 evaluate

Verfasst: 2. Mai 2015 15:24
von hololol2
Die Tests müssen ohne Veränderung im test-Package laufen, d.h. die assembleNumbers() darf nicht in der testEvaluate() aufgerufen werden!
Im Testat werden nämlich nicht deine Tests verwendet, sondern die vorgegebenen, also muss assembleNumbers() in evaluate() aufgerufen werden!

Re: task2 evaluate

Verfasst: 2. Mai 2015 15:45
von Rapha167
das habe ich nun auch so übernommen, ich möchte keinen neuen thread anfangen zu meiner nächsten frage und stelle sie einfach schnell hier,
ich habe bei testcase 1: 402 als ergebnis, ich habe nirgends eine methode geschrieben mit der ich punkt vor strichrechnung beachte, bestehe aber bisher alle anderen tests.

so wie ich das nun verstandne habe muss die punkt vor strich rechnung in public void evaluateSimpleExpression(IListElement begin) beachtet werden oder?
ich denke im übrigen wäre es eine verbesserung wenn die einfachen tests vorher solche fälle auch schon mit abfragen, weil man nun am ende schon ganz schön doof dasteht :)

Re: task2 evaluate

Verfasst: 2. Mai 2015 16:25
von hololol2
Ja das musst du in evaluateSimpleExpression() machen. Ist aber eigentlich nicht kompliziert...

Re: task2 evaluate

Verfasst: 2. Mai 2015 16:26
von Rapha167
habs einfach bisher nicht gemacht, weil es be iden tests nicht nötig war, ich setze mich ma ldran, denke nicht das es ein allzugrosses problem sein sollte