1 
2 //          Copyright Ferdinand Majerech 2011.
3 // Distributed under the Boost Software License, Version 1.0.
4 //    (See accompanying file LICENSE_1_0.txt or copy at
5 //          http://www.boost.org/LICENSE_1_0.txt)
6 
7 module dyaml.test.reader;
8 
9 
10 version(unittest)
11 {
12 
13 import dyaml.test.common;
14 import dyaml.reader;
15 
16 
17 // Try reading entire file through Reader, expecting an error (the file is invalid).
18 //
19 // Params:  data    = Stream to read.
20 void runReader(ubyte[] fileData) @safe
21 {
22     try
23     {
24         auto reader = new Reader(fileData);
25         while(reader.peek() != '\0') { reader.forward(); }
26     }
27     catch(ReaderException e)
28     {
29         printException(e);
30         return;
31     }
32     assert(false, "Expected an exception");
33 }
34 
35 
36 /// Stream error unittest. Tries to read invalid input files, expecting errors.
37 ///
38 /// Params:  errorFilename = File name to read from.
39 void testStreamError(string errorFilename) @safe
40 {
41     runReader(readData(errorFilename));
42 }
43 
44 // TODO: remove when a @safe ubyte[] file read can be done.
45 ubyte[] readData(string filename) @trusted
46 {
47     import std.file;
48     return cast(ubyte[])std.file.read(filename);
49 }
50 
51 @safe unittest
52 {
53     printProgress("D:YAML Reader unittest");
54     run("testStreamError", &testStreamError, ["stream-error"]);
55 }
56 
57 } // version(unittest)