lua-exercises/12_balanced_brackets.lua

59 lines
1.6 KiB
Lua

-- Implement is_balanced(), which should return true or false depending
-- on whether the brackets in the input string are balanced,
-- i.e. there is a closing bracket for each opening one.
--
-- Solution --------------------------------------------------------------------
function is_balanced(input)
-- Your implementation here
end
-- Tests -----------------------------------------------------------------------
local luaunit = require("luaunit.luaunit")
function test_single_paren_is_not_balanced()
luaunit.assertFalse(is_balanced("("))
end
function test_paren_pair_is_balanced()
luaunit.assertTrue(is_balanced("()"))
end
function test_inverted_paren_pair_is_not_balanced()
luaunit.assertFalse(is_balanced(")("))
end
function test_nested_parens_are_balanced()
luaunit.assertTrue(is_balanced("(())"))
end
function test_double_open_single_close_paren_is_not_balanced()
luaunit.assertFalse(is_balanced("(()"))
end
function test_single_open_double_close_brace_is_not_balanced()
luaunit.assertFalse(is_balanced("{}}"))
end
function test_nested_parens_and_brackets_are_balanced()
luaunit.assertTrue(is_balanced("([])"))
end
function test_nested_brackets_and_braces_are_balanced()
luaunit.assertTrue(is_balanced("({})"))
end
function test_sequence_of_paren_bracket_and_brace_pairs_are_balanced()
luaunit.assertTrue(is_balanced("()[]{}"))
end
function test_balanced_combination_of_nesting_and_sequencing()
luaunit.assertTrue(is_balanced("(([]{}))[()[[]]]"))
end
function test_interwoven_paren_and_bracket_pairs_are_not_balanced()
luaunit.assertFalse(is_balanced("([)]"))
end
os.exit(luaunit.LuaUnit.run())