Size: 2473
Comment:
|
Size: 997
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
== Fragen und Kommentare zur 7. Vorlesung / zum 7. Übungsblatt == | == Fragen und Kommentare zur 8. Vorlesung / zum 8. Übungsblatt == |
Line 3: | Line 3: |
Bin gerade dabei die parseCommandLineArguments Funktion mit den Optionen input-file und output-file zu testen. Hock' jetzt schon 'ne Weile dran und find' den Fehler nicht. Vielleicht hat jemand gerade mehr Gehirnschmalz, als ich. Hier das Codestück in der Grep.cpp (Ich hoffe, dass ist OK, wenn ich das hier rein Stelle, ist ja nicht wirklich viel mehr als das von der Vorlesung): {{{ // First parse the options. struct option options[] = { {"input-file" , 1, NULL, 'i'}, {"output-file" , 1, NULL, 'o'}, {"case-insensitive-match", 0, NULL, 'c'}, {NULL , 0, NULL, 0 } }; while (true) { int c = getopt_long(argc, argv, "ioc", options, NULL); if (c == -1) break; switch (c) { case 'i': _inputFileName = optarg; break; case 'c': _caseSensitiveMatch = false; break; case 'o': _outputFileName = optarg; break; default: printUsage(); exit(1); } |
@Simson + Alle: Nein, Sie brauchen sich nicht um das kümmern, was Sie "Typsicherheit" nennen. '''Hannah 18Jun10 01:02''' Mit new oder malloc allozierter Speicher wird nicht automatisch mit 0en initialisiert. Es macht also keinen Sinn diesen Speicher auf irgeneinen Inhalt zu testen. Wenn du den Speicher 0en willst: man memset. '''Jens 17Jun10 23:13''' Irgendwie steh ich grad auf dem Schlauch. in meinem Konstruktor heißt es {{{ _elements = new T[MAX_ARRAY_SIZE];}}} und in meinem Test {{{ ASSERT_EQ(NULL, set._elements[0]);}}} und Hudson meldet immer {{{ [ RUN ] SetTest.constructor SetTest.cpp:12: Failure Value of: set._elements[0] Actual: 1 Expected: __null Which is: 0}}} Was ist da los? '''Simson 17Jun10 22:37''' Sollen wir auch für "Typsicherheit" sorgen, also soll bei sowas wie {{{ Set<int> set; set.insert('a'); |
Line 33: | Line 23: |
Mein Test: {{{ Grep grep; int argc = 4; char* argv[4]; argv[0] = const_cast<char*>(""); argv[1] = const_cast<char*>("--output-file"); argv[2] = const_cast<char*>("out.txt"); argv[3] = const_cast<char*>("P"); grep.parseCommandLineArguments(argc, argv); ASSERT_EQ(0, grep._inputFileName[0]); ASSERT_EQ('P', grep._pattern[0]); ASSERT_EQ(0, grep._pattern[1]); ASSERT_EQ('o', grep._outputFileName[0]); ASSERT_EQ('u', grep._outputFileName[1]); ASSERT_EQ('t', grep._outputFileName[2]); ASSERT_EQ('.', grep._outputFileName[3]); ASSERT_EQ('t', grep._outputFileName[4]); ASSERT_EQ('x', grep._outputFileName[5]); ASSERT_EQ('t', grep._outputFileName[6]); }}} Fehlermeldung: {{{ Value of: grep._outputFileName[0] Actual: '\0' (0, 0x0) Expected: 'o' Which is: 'o' (111, 0x6F) }}} Den Test für das input file hab' ich im Prinzip analog dazu gemacht. Der funktioniert. '''MartinS 10Jun10 10:34''' @Simson: Indeed, da fehlt ein Punkt, danke für den Hinweis! Habe ihn jetzt gerade noch zugefügt und die neue Version committed. Machen Sie einfach ''svn update'', dann bekommen Sie ihn auch :-) '''Hannah 10Jun10 00:14''' Sollte {{{isMatch("This is just a line", "a..ne$")}}} wirklich wahr zurückgeben? Fehlt da nicht ein {{{.}}} ? '''Simson 10Jun10 00:09''' |
mit Fehlermeldung abgebrochen werden? '''Simson 17Jun10 22:32''' |
Fragen und Kommentare zur 8. Vorlesung / zum 8. Übungsblatt
@Simson + Alle: Nein, Sie brauchen sich nicht um das kümmern, was Sie "Typsicherheit" nennen. Hannah 18Jun10 01:02
Mit new oder malloc allozierter Speicher wird nicht automatisch mit 0en initialisiert. Es macht also keinen Sinn diesen Speicher auf irgeneinen Inhalt zu testen. Wenn du den Speicher 0en willst: man memset. Jens 17Jun10 23:13
Irgendwie steh ich grad auf dem Schlauch. in meinem Konstruktor heißt es
_elements = new T[MAX_ARRAY_SIZE];
und in meinem Test
ASSERT_EQ(NULL, set._elements[0]);
und Hudson meldet immer
[ RUN ] SetTest.constructor SetTest.cpp:12: Failure Value of: set._elements[0] Actual: 1 Expected: __null Which is: 0
Was ist da los? Simson 17Jun10 22:37
Sollen wir auch für "Typsicherheit" sorgen, also soll bei sowas wie
Set<int> set; set.insert('a');
mit Fehlermeldung abgebrochen werden? Simson 17Jun10 22:32