Soci (Soczó Zsolt) szakmai blogja

2010.05.12.

Coverage fejtörő

Filed under: .NET,Szakmai élet,Testing,Visual Studio — Soczó Zsolt @ 00:39

A VS coverage-e ezt mutatja, hogy ez a sor csak részben van lefedve:

return (GetSourceItem(step) – this[step – 1]) * e + this[step – 1];

Nincs benne && vagy ||, akkor triviális lenne. Én már tudom a választ. :)

Update: alul, kommentben ott a megoldás.

12 Comments

  1. NullReference vagy IndexOutOfBound exception?

    Comment by Zsoldos Peter — 2010.05.12. @ 06:42

  2. Nem.

    Comment by Soczó Zsolt — 2010.05.12. @ 07:51

  3. GetSourceItem belsejét nem járja be teljesen?

    pl
    private int GetSourceItem(int step)
    {
    if (1 == 1)
    return 4;

    ….

    return 6;

    }

    Comment by YellowCat — 2010.05.12. @ 08:49

  4. Ha nem, akkor csak az indexer-t tudom elképzelni még. this[step – 1]

    Comment by YellowCat — 2010.05.12. @ 08:50

  5. Ha a GetSourceItem belsejét nem járná be, az ott látszana, nem a hívó soron.
    Nem az indexerrel van baj.

    Hint: nem teljesen ennyi a kód, mert a compiler generál hozzá, ami nem látszik, de a coverage nyilván látja.

    Comment by Soczó Zsolt — 2010.05.12. @ 08:53

  6. e==0?

    Comment by firestrm — 2010.05.12. @ 12:20

  7. Nem, ha osztás lenne e-vel, akkor esetleg, de nem.

    Comment by Soczó Zsolt — 2010.05.12. @ 15:42

  8. A “this[step – 1]”-t kiemeli változóba (bár ez Debug módban érdekes lenne), hogy optimalizáljon?

    Comment by kpocza — 2010.05.12. @ 17:17

  9. Nem. :) Éjszaka megírom.

    Comment by Soczó Zsolt — 2010.05.12. @ 17:19

  10. Nos, a megoldás az, hogy a számításban nullable típusokat használok, és ezek miatt a compilernek külön kódot kell írni az operátorokhoz, hogy lekezelje, ha valamelyik operandusz null.
    Ha a fenti kódban minden értéknek lekérem a tényleges értékét, a .Value-val, akkor már teljes a lefedettség.

    Most futottam pl. ebbe bele:

    if (slow.HasValue && fast.HasValue)
    {
    return fast – slow;
    }

    Ebben is a return kifejezése csak részben lefedett, de így már teljesen:

    if (slow.HasValue && fast.HasValue)
    {
    return fast.Value – slow.Value;
    }

    Érdekes, nem?

    Comment by Soczó Zsolt — 2010.05.12. @ 21:38

  11. Érdekes tényleg, de azért legközelebb egy kicsit több kódot mutass a fejtörőből, mert honnan tudtuk volna, hogy nullable-ök? :)

    Comment by YellowCat — 2010.05.13. @ 12:41

  12. YellowCat: először én se realizáltam :)
    De igazad van, így túl nehéz volt.

    Comment by Soczó Zsolt — 2010.05.13. @ 13:27

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress