From ecf208a938489588d80e8f1e2ed0be3fcb503bed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enrique=20Garc=C3=ADa=20Cota?= Date: Sat, 23 Apr 2011 21:33:03 +0200 Subject: [PATCH] organized tests into groups --- inspect.lua | 20 +++++++++++++-- spec/inspect_spec.lua | 57 ++++++++++++++++++++++++++++++++++--------- 2 files changed, 63 insertions(+), 14 deletions(-) diff --git a/inspect.lua b/inspect.lua index 38004d2..252471b 100644 --- a/inspect.lua +++ b/inspect.lua @@ -16,6 +16,19 @@ local function smartQuote(str) return string.format("%q", str ) end +local unescapedChars = { + ["\a"] = "\\a", ["\b"] = "\\b", ["\f"] = "\\f", ["\n"] = "\\n", + ["\r"] = "\\r", ["\t"] = "\\t", ["\v"] = "\\v", ["\\"] = "\\\\" +} + +local function unescapeChar(c) + return unescapedChars[c] +end + +local function unescape(str) + return string.gsub( str, "(%c)", unescapeChar ) +end + local Buffer = {} @@ -38,7 +51,9 @@ function Buffer:addValue(v) local tv = type(v) if tv == 'string' then - self:add(smartQuote(string.gsub( v, "\n", "\\n" ))) + self:add(smartQuote(unescape(v))) + elseif tv == 'number' or tv == 'boolean' then + self:add(tostring(v)) elseif tv == 'table' then self:add('{') for i=1, #v do @@ -47,8 +62,9 @@ function Buffer:addValue(v) end self:add('}') else - self:add(tostring(v)) + self:add('<',tv,'>') end + return self end diff --git a/spec/inspect_spec.lua b/spec/inspect_spec.lua index 6a45179..2bc668d 100644 --- a/spec/inspect_spec.lua +++ b/spec/inspect_spec.lua @@ -2,25 +2,58 @@ local inspect = require 'inspect' context( 'inspect', function() - test('Should work with numbers', function() - assert_equal(inspect(1), "1") - assert_equal(inspect(1.5), "1.5") - assert_equal(inspect(-3.14), "-3.14") + context('numbers', function() + test('Should work with integers', function() + assert_equal(inspect(1), "1") + end) + + test('Should work with decimals', function() + assert_equal(inspect(1.5), "1.5") + end) + + test('Should work with negative numbers', function() + assert_equal(inspect(-3.14), "-3.14") + end) end) - test('Should work with strings', function() - assert_equal(inspect("hello"), '"hello"') - assert_equal(inspect('I have "quotes"'), "'I have \"quotes\"'") + context('strings', function() + test('Should put quotes around regular strings', function() + assert_equal(inspect("hello"), '"hello"') + end) + + test('Should put apostrophes around strings with quotes', function() + assert_equal(inspect('I have "quotes"'), "'I have \"quotes\"'") + end) + + test('Should use regular quotes if the string has both quotes and apostrophes', function() assert_equal(inspect("I have \"quotes\" and 'apostrophes'"), '"I have \\"quotes\\" and \'apostrophes\'"') - assert_equal(inspect('I have \n new \n lines'), '"I have \\\\n new \\\\n lines"') + end) + + test('Should escape escape control characters', function() + assert_equal(inspect('I have \n new \n lines'), '"I have \\\\n new \\\\n lines"') + assert_equal(inspect('I have \b a back space'), '"I have \\\\b a back space"') + end) end) - test('Should work with simple array-like tables', function() - assert_equal(inspect({1,2,3}), "{1, 2, 3}" ) + test('Should work with functions', function() + assert_equal(inspect(print), '') end) - test('Should work with nested arrays', function() - assert_equal(inspect({1,2,3, {4,5}, 6}), "{1, 2, 3, {4, 5}, 6}" ) + test('Should work with booleans', function() + assert_equal(inspect(true), 'true') + assert_equal(inspect(false), 'false') + end) + + context('tables', function() + + test('Should work with simple array-like tables', function() + assert_equal(inspect({1,2,3}), "{1, 2, 3}" ) + end) + + test('Should work with nested arrays', function() + assert_equal(inspect({1,2,3, {4,5}, 6}), "{1, 2, 3, {4, 5}, 6}" ) + end) + end) end)