fix hdf5 warning after [a,b] = listvarinfile(...)
[scilab.git] / scilab / modules / fileio / tests / unit_tests / mgetl.dia.ref
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2010 - DIGITEO - Allan CORNET
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 // <-- CLI SHELL MODE -->
8 // =============================================================================
9 // Unitary tests for mgetl function
10 //==============================================================================
11 function [filename, txt] = create_file(arg)
12     if isempty(arg) then
13         txt = [];
14         filename = tempname();
15     elseif typeof(arg) == "string" then
16         txt = arg;
17         filename = tempname();
18         if arg <> [] then
19             mputl(arg, filename);
20         end
21     elseif typeof(arg) == "constant" then
22         txt = "";
23         for i=1:size(arg, '*')
24             txt = [txt; strcat(repmat(ascii(96+i), 1, arg(i)))];
25         end
26         filename = tempname();
27         mputl(txt, filename);
28     end
29 end
30 function fd = open_create_file(txt)
31     fd = mopen(create_file(txt), "rt");
32 endfunction
33 function check_mgetl(f, expected, varargin)
34     txt = mgetl(f, varargin(:));
35     assert_checkequal(txt, expected);
36 endfunction
37 ref = ["1 Scilab"; ..
38         "2 Puffin"; ..
39         "3 "; ..
40         "4 Puffin"; ..
41         "5 Scilab"];
42 // test simple
43 check_mgetl(create_file("a"), "a");
44 check_mgetl(create_file(ref), ref);
45 // test file argument: file descriptor
46 fd = open_create_file(ref);
47 check_mgetl(fd, [], 0)
48 mclose(fd);
49 // test line count argument: read all lines
50 check_mgetl(create_file(ref), ref, -1);
51 check_mgetl(create_file(ref), ref, -10);
52 // test line count argument: read zero lines
53 check_mgetl(create_file(ref), [], 0);
54 // test line count argument: read some lines
55 check_mgetl(create_file(ref), ref(1), 1);
56 check_mgetl(create_file(ref), ref(1:2), 2);
57 check_mgetl(create_file(ref), ref, 100);
58 // read all lines in several calls
59 fd = open_create_file(ref);
60 check_mgetl(fd, ref(1), 1);
61 check_mgetl(fd, ref(2:3), 2);
62 check_mgetl(fd, ref(4:5), 3);
63 mclose(fd);
64 // test empty file
65 check_mgetl(create_file([]), []);
66 // test file empty lines
67 filename = tempname();
68 fd = mopen(filename, "wb");
69 mfprintf(fd, ascii(10));
70 mclose(fd);
71 check_mgetl(filename, "");
72 txt = mgetl("SCI/modules/fileio/tests/unit_tests/text.txt");
73 assert_checkequal(size(txt), [6 1]);
74 assert_checkequal(txt(6), "");
75 // test file with different EOL (end of line)
76 ref_EOL = ["line with CR LF"; ..
77     "line with LF"; ..
78     "line with no EOL"];
79 filename = tempname();
80 fd = mopen(filename, "wb");
81 mfprintf(fd, "%s" + ascii(13) + ascii(10), ref_EOL(1));
82 mfprintf(fd, "%s" + ascii(10), ref_EOL(2));
83 mfprintf(fd, "%s", ref_EOL(3));
84 mclose(fd);
85 check_mgetl(filename, ref_EOL);
86 // test file with BOM
87 txt = mgetl("SCI/modules/fileio/tests/unit_tests/text-UTF8BOM.txt");
88 assert_checkequal(size(txt), [13 1]);
89 r = "Scilab is a numerical computational package developed since 1990 by researchers from the INRIA and the Ecole nationale des ponts et chaussees (ENPC). It is, since the creation of the Scilab consortium in May 2003, developed and maintained by the INRIA.";
90 assert_checkequal(txt(1), r);
91 // test when line size exceeeds reading buffer size (currently 4096 characters per line)
92 [filename, ref2] = create_file([5000, 5000]);
93 check_mgetl(filename, ref2);
94 [filename, ref2] = create_file([100, 5000, 15000]);
95 check_mgetl(filename, ref2);
96 [filename, ref2] = create_file([4095, 8191, 16383]);
97 check_mgetl(filename, ref2);
98 [filename, ref2] = create_file([4096, 8192, 16384]);
99 check_mgetl(filename, ref2);
100 // test error management
101 ierr = execstr("mgetl(1000, 1)", "errcatch");
102 assert_checkequal(ierr, 999);
103 ierr = execstr("mgetl(TMPDIR + ""notfound.txt"",1)", "errcatch");
104 assert_checkequal(ierr, 999);