Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Comment on

( #3333=superdoc: print w/ replies, xml ) Need Help??
Alright - I already have written some gitzy little tests for the tiny, first module I wrote 3 months ago. And it felt great, too! But now the feeling is a little hollow. All I've done is one test per sub, testing the numbers I give it yield the answer I expect. I mean, for me the only way a test should fail is if the module isn't there. (or perhaps, if I go and change the checksum algorithm in a drunken stupor, the tests would bail me out) I somehow feel there should be more to it.

So my question is - and it's quite newbie - How do I write a test? Forgive me for being pedantic, but there's not a lot out there. Test::Harness is briefly described in the Camel book (Amelia, to some ;) and there's the nodes Writing tests and perlman:Test::Harness. Does make test run all of the tests that it finds in the t directory automatically?

Another question - How would you write tests for a program? The same as you would for a module? (but those are run with make test)

For added entertainment, I'll throw in my "test suite". (Comments very welcome - snigger if you like ;)

# Before `make install' is performed this script should # be runnable with `make test'. After `make install' it # should work as `perl test.pl' ####### We start with some black magic to print on failure. # Change 1..1 below to 1..last_test_to_print . # (It may become useful if the test is moved to ./t # subdirectory.) BEGIN { $| = 1; print "1..7\n"; } END {print "not ok 1\n" unless $loaded;} use Local::Barcode::Protocol; $loaded = 1; print "ok 1\n"; ######################### End of black magic. # Should tighten test code, should use Test::Harness # do some sanity checking on values # $testcode = '123456789/12345/1'; @decoded = decode_string($testcode); if (scalar @decoded == 3) { print "ok 2\n"; } else { print "not ok 2\n $decoded[0],$decoded[1],$decoded[2]\n"; } $one = '123456789'; $two = '12345'; $three = '1'; $result = encode_string($one, $two, $three); if ($testcode eq $result) { print "ok 3\n"; } else { print "not ok 3 ... encode_string Wanted $testcode Got $result\n"; } $result = generate_checksum($one, $two); if ($three eq $result) { print "ok 4\n"; } else { print "not ok 4\n $result\n"; } $result = is_valid_student($one); if (defined $result) { print "ok 5\n"; } else { print "not ok 5\n $result\n"; } $result = is_valid_assignment($two); if (defined $result) { print "ok 6\n"; } else { print "not ok 6\n $result\n"; } $result = assign_belongto_student($one, $two); if (defined $result) { print "ok 7\n"; } else { print "not ok 7\n $result\n"; }
Good topic!

Ea :wq

Edit Masem 2001-10-11 - Code Tags


In reply to *How* Do I Get Involved? by Ea
in thread How You (Yes You!) Can Get Involved by chromatic

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • Log In?
    Username:
    Password:

    What's my password?
    Create A New User
    Chatterbox?
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others lurking in the Monastery: (6)
    As of 2015-07-28 03:01 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









      Results (251 votes), past polls