minor refactor: move tests to dyaml.test.*, remove spaces at ends of lines (#91)
minor refactor: move tests to dyaml.test.*, remove spaces at ends of lines merged-on-behalf-of: BBasile <BBasile@users.noreply.github.com>
This commit is contained in:
parent
e7ea38652b
commit
5ad4c3c435
11 changed files with 94 additions and 94 deletions
96
source/dyaml/test/tokens.d
Normal file
96
source/dyaml/test/tokens.d
Normal file
|
@ -0,0 +1,96 @@
|
|||
|
||||
// Copyright Ferdinand Majerech 2011.
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
|
||||
module dyaml.test.tokens;
|
||||
|
||||
|
||||
version(unittest)
|
||||
{
|
||||
|
||||
import std.array;
|
||||
import std.file;
|
||||
|
||||
import dyaml.test.common;
|
||||
import dyaml.token;
|
||||
|
||||
|
||||
/**
|
||||
* Test tokens output by scanner.
|
||||
*
|
||||
* Params: verbose = Print verbose output?
|
||||
* dataFilename = File to scan.
|
||||
* tokensFilename = File containing expected tokens.
|
||||
*/
|
||||
void testTokens(bool verbose, string dataFilename, string tokensFilename)
|
||||
{
|
||||
//representations of YAML tokens in tokens file.
|
||||
auto replace = [TokenID.Directive : "%" ,
|
||||
TokenID.DocumentStart : "---" ,
|
||||
TokenID.DocumentEnd : "..." ,
|
||||
TokenID.Alias : "*" ,
|
||||
TokenID.Anchor : "&" ,
|
||||
TokenID.Tag : "!" ,
|
||||
TokenID.Scalar : "_" ,
|
||||
TokenID.BlockSequenceStart : "[[" ,
|
||||
TokenID.BlockMappingStart : "{{" ,
|
||||
TokenID.BlockEnd : "]}" ,
|
||||
TokenID.FlowSequenceStart : "[" ,
|
||||
TokenID.FlowSequenceEnd : "]" ,
|
||||
TokenID.FlowMappingStart : "{" ,
|
||||
TokenID.FlowMappingEnd : "}" ,
|
||||
TokenID.BlockEntry : "," ,
|
||||
TokenID.FlowEntry : "," ,
|
||||
TokenID.Key : "?" ,
|
||||
TokenID.Value : ":" ];
|
||||
|
||||
string[] tokens1;
|
||||
string[] tokens2 = readText(tokensFilename).split();
|
||||
scope(exit)
|
||||
{
|
||||
if(verbose){writeln("tokens1: ", tokens1, "\ntokens2: ", tokens2);}
|
||||
}
|
||||
|
||||
auto loader = Loader(dataFilename);
|
||||
foreach(token; loader.scan())
|
||||
{
|
||||
if(token.id != TokenID.StreamStart && token.id != TokenID.StreamEnd)
|
||||
{
|
||||
tokens1 ~= replace[token.id];
|
||||
}
|
||||
}
|
||||
|
||||
assert(tokens1 == tokens2);
|
||||
}
|
||||
|
||||
/**
|
||||
* Test scanner by scanning a file, expecting no errors.
|
||||
*
|
||||
* Params: verbose = Print verbose output?
|
||||
* dataFilename = File to scan.
|
||||
* canonicalFilename = Another file to scan, in canonical YAML format.
|
||||
*/
|
||||
void testScanner(bool verbose, string dataFilename, string canonicalFilename)
|
||||
{
|
||||
foreach(filename; [dataFilename, canonicalFilename])
|
||||
{
|
||||
string[] tokens;
|
||||
scope(exit)
|
||||
{
|
||||
if(verbose){writeln(tokens);}
|
||||
}
|
||||
auto loader = Loader(filename);
|
||||
foreach(ref token; loader.scan()){tokens ~= to!string(token.id);}
|
||||
}
|
||||
}
|
||||
|
||||
unittest
|
||||
{
|
||||
writeln("D:YAML tokens unittest");
|
||||
run("testTokens", &testTokens, ["data", "tokens"]);
|
||||
run("testScanner", &testScanner, ["data", "canonical"]);
|
||||
}
|
||||
|
||||
} // version(unittest)
|
Loading…
Add table
Add a link
Reference in a new issue