Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked
 
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
  • Outside of code tags, you may need to use entities for some characters:
            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 avoiding work at the Monastery: (4)
    As of 2014-10-21 00:07 GMT
    Sections?
    Information?
    Find Nodes?
    Leftovers?
      Voting Booth?

      For retirement, I am banking on:










      Results (93 votes), past polls