Má tu niekto skúsenosti s knižnicou greatest.h ? Compare NULL & String rubrika: Programování: C/C++

11 Mlocik97
položil/-a 31.3.2018

Zdravím potreboval by som poradiť ohľadom knižnice greatest.h...

Mám dajme tomu kód:

TEST reverse_test_3() {
  char* reversed = reverse("impact");
  ASSERT_STR_EQ("TCAPMI", reversed);
  free(reversed);
    reversed = NULL;
  PASS();
}

avšak ak reverse vráti NULL, tak mám segfault,... viem kde je chyba, a že ASSERT_STR_EQ nemôže porovnávať string a NULL. Ako bych ale mal ošetriť takýto prípad? Môže to byť aj naopak že očakávaný je NULL a výsledok funkce bude string. vtedy pre prípad ASSERT_EQ len.

Komentáře

  • roman.hocke : Nestačilo by prostě ASSERT(reversed != NULL); ASSERT_STR_EQ("TCAPMI", reversed); ? 3.4.2018
  • mato7d5 : assert() pomôže iba v debug verzii, ak je nutné testovat aj release tak assert() mu nepomôže. 3.4.2018
  • Anonym : @mato7d5 To macro ASSERT v greatest ale není ze základní knihovny (?). 8.4.2018
  • mato7d5 : @uetoyo: ano, je zo standardnej kniznice. 9.4.2018
  • Anonym : @mato7d5 Tak mi ukaž kde, jsem slepej: https://github.com/silentbicycle/greatest/blob/master/greatest.h 10.4.2018
  • Mlocik97 : uetoyo víš čo vôbec znamená pojem štandardná knižnica? A greatest.c nieje štandardná knižnica, assert však je zo štandardnej knižnice. Preštuduj si základy C. 11.4.2018
  • Anonym : Ano assert je ze základní knižnice, proto se podívej, že ta knihovna nikde assert ze základní knihovny nepoužívá a tudíž argument o nějaké debug verzi je úplně mimo. @roman.hocke psal o ASSERT makru z greatest ne o assert z std. knihovny. Vypadá to, že základy C potřebuješ spíš ty, když si neumíš otestovat hodnotu na NULL. Máš test navíc ne úplně štastně napsaný. Pokud ti funkce vrací NULL pak zřejmě, když vstup byl NULL a to testuješ v samostatném testu, ne že to odchytáváš jako náhodnou věc, aby ti nespadl test. Ale jako domácí úkol to je fajn. 12.4.2018
odkaz Vyřešeno
7 mato7d5
odpověděl/-a 1.4.2018
 
upravil/-a 1.4.2018
TEST reverse_test_3() {
  char* reversed = reverse("impact");
  if (reversed) {
     ASSERT_STR_EQ("TCAPMI", reversed);
     free(reversed);
       reversed = NULL;
     PASS();
  }
  else {
     // si je chyba ak reverse vratila NULL, takze test moze failnut
  }
}
<code>

Komentáře

  • Mlocik97 : ďakujem,... 1.4.2018

Pro zobrazení všech 2 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.