0
0
Fork 0
mirror of https://gitlab.com/Oreolek/salet-module.git synced 2024-05-01 16:49:36 +03:00

Functional testing

This commit is contained in:
Alexander Yakovlev 2016-09-26 11:48:27 +07:00
parent 439ddaa679
commit 5caaa22220
6 changed files with 4976 additions and 0 deletions

419
test/css/qunit-2.0.1.css Normal file
View file

@ -0,0 +1,419 @@
/*!
* QUnit 2.0.1
* https://qunitjs.com/
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license
* https://jquery.org/license
*
* Date: 2016-07-23T19:39Z
*/
/** Font Family and Sizes */
#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult {
font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial, sans-serif;
}
#qunit-testrunner-toolbar, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
#qunit-tests { font-size: smaller; }
/** Resets */
#qunit-tests, #qunit-header, #qunit-banner, #qunit-filteredTest, #qunit-userAgent, #qunit-testresult, #qunit-modulefilter {
margin: 0;
padding: 0;
}
/** Header (excluding toolbar) */
#qunit-header {
padding: 0.5em 0 0.5em 1em;
color: #8699A4;
background-color: #0D3349;
font-size: 1.5em;
line-height: 1em;
font-weight: 400;
border-radius: 5px 5px 0 0;
}
#qunit-header a {
text-decoration: none;
color: #C2CCD1;
}
#qunit-header a:hover,
#qunit-header a:focus {
color: #FFF;
}
#qunit-banner {
height: 5px;
}
#qunit-filteredTest {
padding: 0.5em 1em 0.5em 1em;
color: #366097;
background-color: #F4FF77;
}
#qunit-userAgent {
padding: 0.5em 1em 0.5em 1em;
color: #FFF;
background-color: #2B81AF;
text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
}
/** Toolbar */
#qunit-testrunner-toolbar {
padding: 0.5em 1em 0.5em 1em;
color: #5E740B;
background-color: #EEE;
}
#qunit-testrunner-toolbar .clearfix {
height: 0;
clear: both;
}
#qunit-testrunner-toolbar label {
display: inline-block;
}
#qunit-testrunner-toolbar input[type=checkbox],
#qunit-testrunner-toolbar input[type=radio] {
margin: 3px;
vertical-align: -2px;
}
#qunit-testrunner-toolbar input[type=text] {
box-sizing: border-box;
height: 1.6em;
}
.qunit-url-config,
.qunit-filter,
#qunit-modulefilter {
display: inline-block;
line-height: 2.1em;
}
.qunit-filter,
#qunit-modulefilter {
float: right;
position: relative;
margin-left: 1em;
}
.qunit-url-config label {
margin-right: 0.5em;
}
#qunit-modulefilter-search {
box-sizing: border-box;
width: 400px;
}
#qunit-modulefilter-search-container:after {
position: absolute;
right: 0.3em;
content: "\25bc";
color: black;
}
#qunit-modulefilter-dropdown {
/* align with #qunit-modulefilter-search */
box-sizing: border-box;
width: 400px;
position: absolute;
right: 0;
top: 50%;
margin-top: 0.8em;
border: 1px solid #D3D3D3;
border-top: none;
border-radius: 0 0 .25em .25em;
color: #000;
background-color: #F5F5F5;
z-index: 99;
}
#qunit-modulefilter-dropdown a {
color: inherit;
text-decoration: none;
}
#qunit-modulefilter-dropdown .clickable.checked {
font-weight: bold;
color: #000;
background-color: #D2E0E6;
}
#qunit-modulefilter-dropdown .clickable:hover {
color: #FFF;
background-color: #0D3349;
}
#qunit-modulefilter-actions {
display: block;
overflow: auto;
/* align with #qunit-modulefilter-dropdown-list */
font: smaller/1.5em sans-serif;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > * {
box-sizing: border-box;
max-height: 2.8em;
display: block;
padding: 0.4em;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > button {
float: right;
font: inherit;
}
#qunit-modulefilter-dropdown #qunit-modulefilter-actions > :last-child {
/* insert padding to align with checkbox margins */
padding-left: 3px;
}
#qunit-modulefilter-dropdown-list {
max-height: 200px;
overflow-y: auto;
margin: 0;
border-top: 2px groove threedhighlight;
padding: 0.4em 0 0;
font: smaller/1.5em sans-serif;
}
#qunit-modulefilter-dropdown-list li {
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
#qunit-modulefilter-dropdown-list .clickable {
display: block;
padding-left: 0.15em;
}
/** Tests: Pass/Fail */
#qunit-tests {
list-style-position: inside;
}
#qunit-tests li {
padding: 0.4em 1em 0.4em 1em;
border-bottom: 1px solid #FFF;
list-style-position: inside;
}
#qunit-tests > li {
display: none;
}
#qunit-tests li.running,
#qunit-tests li.pass,
#qunit-tests li.fail,
#qunit-tests li.skipped {
display: list-item;
}
#qunit-tests.hidepass {
position: relative;
}
#qunit-tests.hidepass li.running,
#qunit-tests.hidepass li.pass {
visibility: hidden;
position: absolute;
width: 0;
height: 0;
padding: 0;
border: 0;
margin: 0;
}
#qunit-tests li strong {
cursor: pointer;
}
#qunit-tests li.skipped strong {
cursor: default;
}
#qunit-tests li a {
padding: 0.5em;
color: #C2CCD1;
text-decoration: none;
}
#qunit-tests li p a {
padding: 0.25em;
color: #6B6464;
}
#qunit-tests li a:hover,
#qunit-tests li a:focus {
color: #000;
}
#qunit-tests li .runtime {
float: right;
font-size: smaller;
}
.qunit-assert-list {
margin-top: 0.5em;
padding: 0.5em;
background-color: #FFF;
border-radius: 5px;
}
.qunit-source {
margin: 0.6em 0 0.3em;
}
.qunit-collapsed {
display: none;
}
#qunit-tests table {
border-collapse: collapse;
margin-top: 0.2em;
}
#qunit-tests th {
text-align: right;
vertical-align: top;
padding: 0 0.5em 0 0;
}
#qunit-tests td {
vertical-align: top;
}
#qunit-tests pre {
margin: 0;
white-space: pre-wrap;
word-wrap: break-word;
}
#qunit-tests del {
color: #374E0C;
background-color: #E0F2BE;
text-decoration: none;
}
#qunit-tests ins {
color: #500;
background-color: #FFCACA;
text-decoration: none;
}
/*** Test Counts */
#qunit-tests b.counts { color: #000; }
#qunit-tests b.passed { color: #5E740B; }
#qunit-tests b.failed { color: #710909; }
#qunit-tests li li {
padding: 5px;
background-color: #FFF;
border-bottom: none;
list-style-position: inside;
}
/*** Passing Styles */
#qunit-tests li li.pass {
color: #3C510C;
background-color: #FFF;
border-left: 10px solid #C6E746;
}
#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
#qunit-tests .pass .test-name { color: #366097; }
#qunit-tests .pass .test-actual,
#qunit-tests .pass .test-expected { color: #999; }
#qunit-banner.qunit-pass { background-color: #C6E746; }
/*** Failing Styles */
#qunit-tests li li.fail {
color: #710909;
background-color: #FFF;
border-left: 10px solid #EE5757;
white-space: pre;
}
#qunit-tests > li:last-child {
border-radius: 0 0 5px 5px;
}
#qunit-tests .fail { color: #000; background-color: #EE5757; }
#qunit-tests .fail .test-name,
#qunit-tests .fail .module-name { color: #000; }
#qunit-tests .fail .test-actual { color: #EE5757; }
#qunit-tests .fail .test-expected { color: #008000; }
#qunit-banner.qunit-fail { background-color: #EE5757; }
/*** Skipped tests */
#qunit-tests .skipped {
background-color: #EBECE9;
}
#qunit-tests .qunit-skipped-label {
background-color: #F4FF77;
display: inline-block;
font-style: normal;
color: #366097;
line-height: 1.8em;
padding: 0 0.5em;
margin: -0.4em 0.4em -0.4em 0;
}
/** Result */
#qunit-testresult {
padding: 0.5em 1em 0.5em 1em;
color: #2B81AF;
background-color: #D2E0E6;
border-bottom: 1px solid #FFF;
}
#qunit-testresult .module-name {
font-weight: 700;
}
/** Fixture */
#qunit-fixture {
position: absolute;
top: -10000px;
left: -10000px;
width: 1000px;
height: 1000px;
}
#page {
display: none;
}

32
test/index.html Normal file
View file

@ -0,0 +1,32 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title></title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/qunit-2.0.1.css">
</head>
<body>
<div id="page" class="container">
<div class="row">
<div id="content_wrapper">
<div id="content" class="content">
</div>
<a name="end_of_content"></a>
</div>
</div>
</div>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
<!-- Dependency JS Libraries -->
<script src="lib/marked.min.js"></script>
<script src="lib/jquery-2.2.0.min.js"></script>
<script src="lib/qunit-2.0.1.js"></script>
<script src="../lib/index.min.js"></script>
<script src="test.js"></script>
</body>
</html>

4
test/lib/jquery-2.2.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long

1
test/lib/marked.min.js vendored Normal file

File diff suppressed because one or more lines are too long

4437
test/lib/qunit-2.0.1.js Normal file

File diff suppressed because it is too large Load diff

83
test/test.js Normal file
View file

@ -0,0 +1,83 @@
salet.game_id = "2829f25a-c77a-4957-9662-e32b082f9f05";
salet.game_version = "1.0";
salet.autosave = false;
salet.autoload = false;
$(document).ready(function() {
salet.beginGame();
QUnit.test("the game is started", function(assert) {
assert.notEqual(salet, void 0, "Salet is initialized");
return assert.equal(salet.current, "start", "Salet is in the room called 'start'");
});
QUnit.test("Markdown is working", function(assert) {
return assert.equal(markdown("*hi*"), "<p><em>hi</em></p>\n", "Markdown is good");
});
QUnit.test("RNG is working", function(assert) {
assert.ok(salet.rnd.randf() >= 0, "Random float is not negative");
assert.ok(salet.rnd.randf() < 1, "Random float is less than 1");
assert.equal(salet.rnd.diceString("d1"), 1, "A d1 dice string returns 1");
assert.equal(salet.rnd.diceString("1d1"), 1, "A 1d1 dice string returns 1");
assert.equal(salet.rnd.diceString("1d1+1"), 2, "A 1d1+1 dice string returns 2");
assert.ok(salet.rnd.diceString("d%") > 0, "A d% dice string returns a positive number");
assert.ok(salet.rnd.diceString("d%") <= 100, "A d% dice string returns a number less than 100");
assert.ok(salet.rnd.diceString("dF") >= -1, "A Fudge dice string returns a number more or equal to -1");
return assert.ok(salet.rnd.diceString("dF") <= 1, "A Fudge dice string returns a number less or equal to -1");
});
QUnit.test("Inventory", function(assert) {
var lamp;
lamp = unit("lamp", {
display: "lamp description",
inv: function() {
return "that's a lamp";
}
});
assert.equal(salet.character.has("lamp"), false, "The character has no lamp");
salet.character.take(lamp);
assert.equal(salet.character.has("lamp"), true, "The character has the lamp now");
assert.equal(salet.character.inv("lamp"), "that's a lamp", "The lamp has an inventory action");
assert.ok(salet.character.listinv("lamp").match("lamp description"), "The lamp has a description");
salet.character.drop("lamp");
return assert.equal(salet.character.has("lamp"), false, "The character has no lamp again");
});
QUnit.test("Localization", function(assert) {
assert.ok(window.i18n != null, "The localization is ready");
window.i18n.push("ru", {
"hello": "привет"
});
return assert.equal(window.i18n.localize("hello", "ru"), "привет", "The localization is working");
});
QUnit.test("View", function(assert) {
salet.view.clearContent();
assert.equal(jQuery("#content").html(), "", "View clears the content");
salet.view.write("<p>hello</p>");
return assert.equal(jQuery("#content").html(), "<p>hello</p>", "View writes new content");
});
return setTimeout(function() {
salet.goTo("start2");
QUnit.test("Salet enters second room", function(assert) {
assert.equal(salet.current, "start2", "This is the second room");
return assert.equal($("#content").text(), "This is the second room.\n", "The room description is printed ok.");
});
salet.goTo("start");
QUnit.test("The second room forbids exiting (boolean)", function(assert) {
return assert.equal(salet.current, "start2", "This is still the second room");
});
salet.goTo("start2");
salet.rooms["start2"].canExit = function() {
return false;
};
salet.goTo("start");
return QUnit.test("The second room forbids exiting (function)", function(assert) {
return assert.equal(salet.current, "start2", "This is still the second room");
});
}, 100);
});
room("start", {
dsc: ""
});
room("start2", {
dsc: "This is the second room.",
canExit: false
});