one more test

This commit is contained in:
Peter Cottle 2013-07-24 09:57:21 -07:00
parent 219c36054f
commit debd5f9fed
11 changed files with 92 additions and 26 deletions

View file

@ -7313,8 +7313,8 @@ GitEngine.prototype.printAndCopyTree = function() {
};
GitEngine.prototype.loadTree = function(tree) {
// deep copy in case we use it a bunch
tree = $.extend(true, {}, tree);
// deep copy in case we use it a bunch. lol awesome copy method
tree = JSON.parse(JSON.stringify(tree));
// first clear everything
this.removeAll();
@ -23877,8 +23877,8 @@ GitEngine.prototype.printAndCopyTree = function() {
};
GitEngine.prototype.loadTree = function(tree) {
// deep copy in case we use it a bunch
tree = $.extend(true, {}, tree);
// deep copy in case we use it a bunch. lol awesome copy method
tree = JSON.parse(JSON.stringify(tree));
// first clear everything
this.removeAll();
@ -29405,6 +29405,7 @@ var toGlobalize = {
Markdown: require('markdown'),
LevelDropdownView: require('../views/levelDropdownView'),
BuilderViews: require('../views/builderViews'),
LevelArbiter: require('../level/arbiter'),
Intl: require('../intl')
};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

2
build/bundle.min.js vendored

File diff suppressed because one or more lines are too long

View file

@ -434,7 +434,7 @@
For a much easier time perusing the source, see the individual files at:
https://github.com/pcottle/learnGitBranching
-->
<script src="build/bundle.min.6f4e59f1.js"></script>
<script src="build/bundle.min.fe16b80c.js"></script>
<!-- The advantage of github pages: super-easy, simple, slick static hostic.
The downside? No raw logs to parse for analytics, so I have to include

View file

@ -12,18 +12,6 @@ var compareAnswer = function(headless, expectedJSON) {
return TreeCompare.compareTrees(expectedTree, actualTree);
};
var compareAnswerExpect = function(headless, expectedJSON) {
var equal = compareAnswer(headless, expectedJSON);
if (!equal) {
var expectedTree = loadTree(expectedJSON);
var actualTree = headless.gitEngine.exportTree();
console.log('expected Tree', expectedTree);
console.log('actual Tree', actualTree);
console.log('~~~~~~~~~~~~~~~~~~~~~');
}
expect(equal).toBe(true);
};
var expectTreeAsync = function(command, expectedJSON) {
var headless = new HeadlessGit();
runs(function() {
@ -125,5 +113,24 @@ describe('GitEngine', function() {
'%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C2%22%2C%22id%22%3A%22master%22%7D%2C%22bugFix%22%3A%7B%22target%22%3A%22C3%27%22%2C%22id%22%3A%22bugFix%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C3%27%22%3A%7B%22parents%22%3A%5B%22C2%22%5D%2C%22id%22%3A%22C3%27%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22master%22%2C%22id%22%3A%22HEAD%22%7D%7D'
);
});
it('solves merging level', function() {
expectTreeAsync(
'git checkout -b bugFix;git commit;git checkout master;git commit;git merge bugFix',
'{"branches":{"master":{"target":"C1","id":"master"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"master","id":"HEAD"}}'
);
});
it('solves rebase level', function() {
expectTreeAsync(
'git checkout -b bugFix;git commit;git checkout master;git commit;git checkout bugFix;git rebase master',
'{"branches":{"master":{"target":"C1","id":"master"}},"commits":{"C0":{"parents":[],"id":"C0","rootCommit":true},"C1":{"parents":["C0"],"id":"C1"}},"HEAD":{"target":"master","id":"HEAD"}}'
);
});
it('does a whole bunch of crazy merging', function() {
"gc;go -b side C1;gc;git merge master;go -b bug master;gc;go -b wut C3;git rebase bug;go side;git rebase wut;gc;git rebase wut;git merge C4;go master;git rebase side;go C6;git merge C3';gb -f wut C8;go bug;git rebase wut",
'%7B%22branches%22%3A%7B%22master%22%3A%7B%22target%22%3A%22C7%22%2C%22id%22%3A%22master%22%7D%2C%22side%22%3A%7B%22target%22%3A%22C7%22%2C%22id%22%3A%22side%22%7D%2C%22bug%22%3A%7B%22target%22%3A%22C8%22%2C%22id%22%3A%22bug%22%7D%2C%22wut%22%3A%7B%22target%22%3A%22C8%22%2C%22id%22%3A%22wut%22%7D%7D%2C%22commits%22%3A%7B%22C0%22%3A%7B%22parents%22%3A%5B%5D%2C%22id%22%3A%22C0%22%2C%22rootCommit%22%3Atrue%7D%2C%22C1%22%3A%7B%22parents%22%3A%5B%22C0%22%5D%2C%22id%22%3A%22C1%22%7D%2C%22C2%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C2%22%7D%2C%22C3%22%3A%7B%22parents%22%3A%5B%22C1%22%5D%2C%22id%22%3A%22C3%22%7D%2C%22C4%22%3A%7B%22parents%22%3A%5B%22C2%22%2C%22C3%22%5D%2C%22id%22%3A%22C4%22%7D%2C%22C5%22%3A%7B%22parents%22%3A%5B%22C2%22%5D%2C%22id%22%3A%22C5%22%7D%2C%22C3%27%22%3A%7B%22parents%22%3A%5B%22C5%22%5D%2C%22id%22%3A%22C3%27%22%7D%2C%22C6%22%3A%7B%22parents%22%3A%5B%22C4%22%5D%2C%22id%22%3A%22C6%22%7D%2C%22C6%27%22%3A%7B%22parents%22%3A%5B%22C3%27%22%5D%2C%22id%22%3A%22C6%27%22%7D%2C%22C7%22%3A%7B%22parents%22%3A%5B%22C4%22%2C%22C6%27%22%5D%2C%22id%22%3A%22C7%22%7D%2C%22C8%22%3A%7B%22parents%22%3A%5B%22C3%27%22%2C%22C6%22%5D%2C%22id%22%3A%22C8%22%7D%7D%2C%22HEAD%22%3A%7B%22target%22%3A%22bug%22%2C%22id%22%3A%22HEAD%22%7D%7D'
});
});

58
spec/levels.spec.js Normal file
View file

@ -0,0 +1,58 @@
var HeadlessGit = require('../src/js/git/headless').HeadlessGit;
var TreeCompare = require('../src/js/git/treeCompare').TreeCompare;
var _ = require('underscore');
var loadTree = function(json) {
return JSON.parse(unescape(json));
};
var compareLevelTree = function(headless, levelBlob) {
var actualTree = headless.gitEngine.exportTree();
return TreeCompare.dispatchFromLevel(levelBlob, actualTree);
};
var expectTreeAsync = function(headless, levelBlob) {
var command = levelBlob.solutionCommand;
if (command.indexOf('git rebase -i') !== -1) {
// dont do interactive rebase levels
return;
}
var start = Date.now();
runs(function() {
headless.sendCommand(command);
});
waitsFor(function() {
var diff = (Date.now() - start);
if (diff > 700) {
console.log('not going to match', command);
}
var result = compareLevelTree(headless, levelBlob);
if (result) {
console.log('solved level ' + levelBlob.name.en_US);
}
return result;
}, 'trees should be equal', 750);
};
var expectLevelSolved = function(levelBlob) {
var headless = new HeadlessGit();
if (levelBlob.startTree) {
headless.gitEngine.loadTreeFromString(levelBlob.startTree);
}
expectTreeAsync(headless, levelBlob);
};
describe('GitEngine Levels', function() {
it('solves levels', function() {
var sequences = require('../src/levels/index').levelSequences;
_.each(Object.keys(sequences), function(sequenceKey) {
var levels = sequences[sequenceKey];
_.each(levels, function(levelBlob) {
expectLevelSolved(levelBlob);
});
});
});
});

View file

@ -183,8 +183,8 @@ GitEngine.prototype.printAndCopyTree = function() {
};
GitEngine.prototype.loadTree = function(tree) {
// deep copy in case we use it a bunch
tree = $.extend(true, {}, tree);
// deep copy in case we use it a bunch. lol awesome copy method
tree = JSON.parse(JSON.stringify(tree));
// first clear everything
this.removeAll();

View file

@ -24,6 +24,7 @@ var toGlobalize = {
Markdown: require('markdown'),
LevelDropdownView: require('../views/levelDropdownView'),
BuilderViews: require('../views/builderViews'),
LevelArbiter: require('../level/arbiter'),
Intl: require('../intl')
};

View file

@ -4,10 +4,6 @@ Mega Things
Before everything else:
~~~~~~~~~~~~~~~~~~~~~~~~~~
[ ] increase test coverage over everything
- unit and integration, but mostly for git operations
[ ] green refactor tree compare to have map
[ ] figure out gh-pages force
Intl TODO
~~~~~~~~~~~~~~~~~~~
@ -54,6 +50,10 @@ Ideas for cleaning
Done things:
(I only started this on Dec 17th 2012 to get a better sense of what was done)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[x] green refactor tree compare to have map
[x] increase test coverage over everything
- unit and integration, but mostly for git operations
[x] figure out gh-pages force
[x] add visuals and text to show compare method
[x] green refactor tree compare to have map
[x] fix tests by stubbing out animation factory to resolve promises