Added FileSystem.nqp, Path.nqp. Completed use case #1 on ticket
[kakapo:rurbans-kakapo.git] / t / FileSystem.nqp
1 #! /usr/bin/env parrot-nqp 
2 # Copyright (C) 2010, Austin Hastings. See accompanying LICENSE file, or 
3 # http://www.opensource.org/licenses/artistic-license-2.0.php for license.
4
5 INIT {
6         # Load the Kakapo library
7         pir::load_language('parrot');
8         my $env := pir::new__PS('Env');
9         my $root_dir := $env<HARNESS_ROOT_DIR> || '.';
10         pir::load_bytecode($root_dir ~ '/library/kakapo_full.pbc');
11 }
12
13 class Test::FileSystem
14         is UnitTest::Testcase ;
15
16 has     $!sut;
17
18 INIT {
19         use(    'UnitTest::Testcase' ); 
20         use(    'UnitTest::Assertions' );       
21 }
22
23 # Run the MAIN for this class.
24 Opcode::get_root_global(pir::get_namespace__P().get_name).MAIN;
25
26 method set_up() {
27         $!sut := FileSystem.instance;
28 }
29
30 method test_cwd() {
31         
32         my $cwd := $!sut.cwd;
33         
34         my @parts := $cwd.split( $!sut.separator );
35         
36 }
37
38 method test_exists() {
39
40         assert_false( $!sut.exists('/tmp/this-PrOBAbly-doesnt-eXXXI$+'),
41                 "File really shouldn't exist." );
42                 
43         assert_true( $!sut.exists('.'),
44                 "Current directory had better exist.");
45 }
46         
47 method test_instance() {
48         
49         assert_not_null( $!sut,
50                 'FileSystem.instance should never return null' );
51                 
52         assert_isa( $!sut, 'FileSystem',
53                 'FileSystem.instance should return an object of the right type' );
54 }
55
56 method test_new() {
57         my $sut := FileSystem.new;
58         
59         assert_instance_of( $sut, 'FileSystem',
60                 '.new should return object of correct type');
61 }
62
63 # NB: Assumes this is run from $KAKAPO root dir.
64 method test_slurp() {
65         my $t1 := $!sut.slurp( 't/test-data/text-file-1' );
66         
67         assert_not_equal( -1, $t1.index( 'text file 1.'),
68                 'Text file 1 should be read in.' );
69         assert_equal( 4, $t1.split("\n").elems,
70                 'File 1 should have 4 lines');
71         
72         my $t2 := $!sut.slurp( 't/test-data/text-file-2' );
73         
74         assert_not_equal( -1, $t2.index( 'text file 2.' ),
75                 'Text file 2 should be read in.' );
76         assert_equal( 4, $t2.split("\n").elems,
77                 'File 2 should have 4 lines');
78 }
79
80 method main() {
81         self.set_up;
82         self.test_slurp;
83 }