OS/2-specific fixes, round II
[p5sagit/p5-mst-13.2.git] / os2 / OS2 / Process / t / os2_atoms.t
1 #! /usr/bin/perl -w
2
3 use strict;
4 use Test::More tests => 48;
5 BEGIN {use_ok 'OS2::Process'}
6
7 ok(SystemAtomTable(), 'SystemAtomTable succeeds');
8 my $tbl = CreateAtomTable;
9
10 ok($tbl, 'CreateAtomTable succeeds');
11
12 is(AtomLength(133, $tbl), 6, 'AtomLength of unknown atom is 6');
13 is(AtomLength(1, $tbl),   6, 'AtomLength of unknown atom is 6');
14 ok(!defined eval {AtomLength(100000, $tbl); 1}, 'AtomLength of invalid atom croaks');
15 # diag($@);
16
17 is(AtomUsage(134, $tbl), 65535, 'AtomUsage of unknown atom is 65535');
18 is(AtomUsage(1, $tbl),   65535, 'AtomUsage of unknown atom is 65535');
19 ok(!defined eval {AtomUsage(100000, $tbl); 1}, 'AtomUsage of invalid atom croaks');
20 # diag($@);
21
22 is(AtomName(134, $tbl), '#134', 'AtomName of unknown atom is #number');
23 is(AtomName(2, $tbl),     '#2', 'AtomName of unknown atom is #number');
24 ok(!defined eval {AtomName(100000, $tbl); 1}, 'AtomName of invalid atom croaks');
25 # diag($@);
26
27 is(FindAtom('#134', $tbl), 134, 'Name of unknown atom per #number');
28 is(FindAtom('#2', $tbl),     2, 'Name of unknown atom per #number');
29 ok(!defined eval {FindAtom('#90000', $tbl); 1}, 'Finding invalid numeric atom croaks');
30 # diag($@);
31 ok(!defined eval {FindAtom('2#', $tbl); 1}, 'Finding invalid atom croaks');
32 # diag($@);
33 ok(!defined eval {FindAtom('texxt/unnknnown', $tbl); 1}, 'Finding invalid atom croaks');
34 # diag($@);
35
36 is(DeleteAtom(125000, $tbl), '', 'Deleting invalid atom returns FALSE');
37 is(DeleteAtom(10000,  $tbl), 1, 'Deleting unknown atom returns 1');
38 ok(!defined eval {DeleteAtom(0, $tbl); 1}, 'Deleting zero atom croaks');
39 # diag($@);
40
41 is(AddAtom('#134', $tbl), 134, 'Add unknown atom per #number');
42 is(AddAtom('#2', $tbl),     2, 'Add unknown atom per #number');
43 ok(!defined eval {AddAtom('#80000', $tbl); 1}, 'Add invalid numeric atom croaks');
44 # diag($@);
45
46 my $a1 = AddAtom("perltest//pp$$", $tbl);
47 ok($a1, 'Add unknown atom per string');
48 my $a2 = AddAtom("perltest//p$$", $tbl);
49 ok($a2, 'Add another unknown atom per string');
50 is(AddAtom("perltest//p$$", $tbl), $a2, 'Add same unknown atom per string');
51 isnt($a1, $a2, 'Different strings result in different atoms');
52 ok($a1 > 0, 'Atom positive');
53 ok($a2 > 0, 'Another atom positive');
54 ok($a1 < 0x10000, 'Atom small');
55 ok($a2 < 0x10000, 'Another atom small');
56
57 is(AtomLength($a1, $tbl), length "perltest//pp$$", 'AtomLength of known atom');
58 is(AtomLength($a2, $tbl), length "perltest//p$$", 'AtomLength of another known atom');
59
60 is(AtomUsage($a1, $tbl), 1, 'AtomUsage of known atom');
61 is(AtomUsage($a2, $tbl), 2, 'AtomUsage of another known atom');
62
63 is(AtomName($a1, $tbl), "perltest//pp$$", 'AtomName of known atom');
64 is(AtomName($a2, $tbl), "perltest//p$$", 'AtomName of another known atom');
65
66 is(FindAtom("perltest//pp$$", $tbl), $a1, 'Name of known atom');
67 is(FindAtom("perltest//p$$", $tbl),  $a2, 'Name of known atom');
68
69 #$^E = 0;
70 ok(DeleteAtom($a1, $tbl), 'DeleteAtom of known atom');
71 #diag("err=$^E");
72 #$^E = 0;
73 ok(DeleteAtom($a2, $tbl), 'DeleteAtom of another known atom');
74 #diag("err=$^E");
75
76 ok(!defined eval {AtomUsage($a1, $tbl); 1}, 'AtomUsage of deleted known atom croaks');
77 # diag($@);
78 is(AtomUsage($a2, $tbl), 1, 'AtomUsage of another known atom');
79
80 ok(!defined eval {AtomName($a1, $tbl); 1}, 'AtomName of deleted known atom croaks');
81 # diag($@);
82 is(AtomName($a2, $tbl), "perltest//p$$", 'AtomName of undeleted another known atom');
83
84 ok(!defined eval {FindAtom("perltest//pp$$", $tbl); 1}, 'Finding known deleted atom croaks');
85 # diag($@);
86 is(FindAtom("perltest//p$$", $tbl),  $a2, 'Finding known undeleted atom');
87
88 ok(DestroyAtomTable($tbl), 'DestroyAtomTable succeeds');