1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
require 'multi_json'
require 'toml'
require 'minitest/autorun'
class TestGenerator < MiniTest::Test
def setup
@doc = {
"integer" => 1,
"float" => 3.14159,
"true" => true,
"false" => false,
"string" => "hi",
"array" => [[1], [2], [3]],
"table_array" => [
{
"name" => "first"
},
{
"name" => "second",
"sub_table_array" => [
{
"sub_name" => "sub first",
},
{
"sub_name" => "sub second"
}
]
}
],
"key" => {
"group" => {
"value" => "lol"
},
"nil_table" => {}
},
"date" => DateTime.now,
"nil" => nil
}
end
def test_generator
doc = @doc.clone
body = TOML::Generator.new(doc).body
doc_parsed = TOML::Parser.new(body).parsed
# removing the nil value
remove_nil = doc.delete "nil"
remove_nil_table = doc["key"].delete "nil_table"
# Extracting dates since Ruby's DateTime equality testing sucks.
original_date = doc.delete "date"
parsed_date = doc_parsed.delete "date"
assert_equal original_date.to_time.to_s, parsed_date.to_time.to_s
refute doc_parsed.length > doc.length, "Parsed doc has more items than we started with."
doc.each do |key, val|
assert_equal val, doc_parsed[key]
end
end
end
|