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)