autogen c tests initial commit

This commit is contained in:
Christopher Chedeau
2014-04-18 17:15:03 -07:00
parent 5f2a219394
commit a90b876e93
2 changed files with 111 additions and 19 deletions

View File

@@ -1,8 +1,28 @@
#include "../Layout.h" #include "../Layout.h"
#include <stdio.h>
int main() int main()
{ {
{
printf("%s", "should layout node with alignItems: flex-start\n");
css_node_t *root_node = new_css_node();
css_node_t *node = root_node;
init_css_node_children(node, 2);
css_node_t *outer_node = node;
{
css_node_t *node;
node = &outer_node->children[0];
node = &outer_node->children[1];
}
layoutNode(root_node);
print_style(root_node, 0);
print_layout(root_node, 0);
free_css_node(root_node);
}
{
css_node_t *root_node = new_css_node(); css_node_t *root_node = new_css_node();
css_node_t *node = root_node; css_node_t *node = root_node;
@@ -29,6 +49,7 @@ int main()
print_style(root_node, 0); print_style(root_node, 0);
print_layout(root_node, 0); print_layout(root_node, 0);
free_css_node(node); free_css_node(root_node);
}
} }

View File

@@ -25,3 +25,74 @@ document.getElementById('layout_code').value = computeLayout.layoutNode.toString
.replace(/var\/\*([^\/]+)\*\//g, '$1') .replace(/var\/\*([^\/]+)\*\//g, '$1')
.replace(/\n /g, '\n'); .replace(/\n /g, '\n');
</script> </script>
<h1>Tests</h1>
<textarea id="test_code" onclick="this.select()"></textarea>
<script>
var currentTest = '';
var allTests = [];
var layoutTestUtils = {
testLayout: function(node, expectedLayout) {
allTests.push({name: currentTest, node: node, expectedLayout: expectedLayout});
},
testRandomLayout: function(node, i) {
}
};
function describe(name, cb) { cb(); }
function it(name, cb) { currentTest = name; cb(); }
</script>
<script src="__tests__/Layout-test.js"></script>
<script>
function printLayout(test) {
var level = 1;
var res = [];
function add(str) {
res.push(indent(level) + str);
}
function indent(level) {
var result = '';
for (var i = 0; i < level; ++i) {
result += ' ';
}
return result;
}
function rec(node) {
if (node.children) {
add('init_css_node_children(node, ' + node.children.length + ');');
add('css_node_t *outer_node = node;');
add('{');
level++;
add('css_node_t *node;');
for (var i = 0; i < node.children.length; ++i) {
add('node = &outer_node->children[' + i + '];');
rec(node.children[i]);
}
level--;
add('}');
}
}
add('{');
level++;
add('printf("%s", "' + test.name.replace(/"/g, '\\"') + '\\n");');
add('css_node_t *root_node = new_css_node();');
add('');
add('css_node_t *node = root_node;');
rec(test.node);
add('layoutNode(root_node);');
add('print_style(root_node, 0);');
add('print_layout(root_node, 0);');
add('free_css_node(root_node);');
level--;
add('}');
return res.join('\n');
}
document.getElementById('test_code').value = allTests.map(printLayout).join('\n\n');
</script>