Balanced parentheses

by Roman Fedytskyi

HTML

<div id="output"></div>

CSS

code {
    border: 1px solid lightgrey;
    background-color: white;
}

JavaScript

function check (str) {
	// please start writing your code here
}

var samples = {
	'{}': true,
	'{([})]': false,
	'{([])}{([])}{([])}': true,
	'asdf{asdf}{f323[324]32}{324}': true,
	'4fff({f}f{[]tt})444[{}]tt': true,
	'{{{': false,
	'': true,
};

function test(samples) {
	var messages = Object.keys(samples).map(function (sample) {
		var expectedResult = samples[sample];
		var actualResult = check(sample);
		var passed = (expectedResult === actualResult);
		var color = passed ? "green" : "red";
		var message = passed ? "OK" : "FAILED";
        var butMsg = passed ? "" : " but got <code>" + String(actualResult) + "</code>";
		return "<span style='color: " + color + ";'><code>" + sample + "</code> should be <code>" + String(expectedResult) + "</code>" + butMsg + " - " + message + "</span>";
	});
	return "<ul><li>" + messages.join('</li><li>') + "</li></ul>"
}

document.getElementById('output').innerHTML = test(samples);