7674f4e2a375c1e63e05538c34244c9248f69de4
[dbsrgits/SQL-Translator.git] / t / 04file,fh,string.t
1 #!/usr/bin/perl
2 # vim: set ft=perl:
3 #
4 # This tests that the same file can be passed in using a filename,
5 # a filehandle, and a string, and return identical results.  There's
6 # a lot of setup here, because we have to emulate the various ways
7 # that $tr->translate might be called:  with a string (filename),
8 # with a filehandle (IO::File, FileHandle, or \*FOO), and with a
9 # scalar reference (data in a string).
10 #
11
12 use strict;
13
14 use IO::File;
15 use SQL::Translator;
16
17 # How many tests
18 BEGIN { print "1..3\n"; }
19
20 $SQL::Translator::DEBUG = 0;
21
22 # Our object; uses the default parser and producer
23 my $tr = SQL::Translator->new;
24
25 # The filename, holder for all the data, and the filehandle
26 my $datafile = "t/data/mysql/Apache-Session-MySQL.sql";
27 my $data;
28 my $fh = IO::File->new($datafile);
29
30 # Pass filename: simplest way
31 my $translated_datafile = $tr->translate($datafile);
32 #warn "Data from filename method is\n$translated_datafile\n\n\n";
33
34 # Pass string reference
35 read($fh, $data, -s $datafile);
36 my $translated_data = $tr->translate(\$data);
37 #warn "Data from string is\n$translated_data\n\n\n";
38
39 print "not " unless length $translated_datafile;
40 print "ok 1 # passing string (filename) works\n";
41
42 print "not " unless length $translated_data;
43 print "ok 2 # passing string as SCALAR reference\n";
44
45 print "not " unless ($translated_datafile eq $translated_data);
46 print "ok 3 # from file == from string\n";