Fix idiv and cvi. Add test case for idiv.

This commit is contained in:
Brendan Dahl 2011-12-30 13:25:34 -08:00
parent 6afb49c6c6
commit 9de52f375d
2 changed files with 12 additions and 3 deletions

View File

@ -536,7 +536,7 @@ var PostScriptEvaluator = (function PostScriptEvaluatorClosure() {
stack.push(Math.cos(a)); stack.push(Math.cos(a));
break; break;
case 'cvi': case 'cvi':
a |= stack.pop(); a = stack.pop() | 0;
stack.push(a); stack.push(a);
break; break;
case 'cvr': case 'cvr':
@ -583,7 +583,7 @@ var PostScriptEvaluator = (function PostScriptEvaluatorClosure() {
case 'idiv': case 'idiv':
b = stack.pop(); b = stack.pop();
a = stack.pop(); a = stack.pop();
stack.push(Math.floor(a / b)); stack.push((a / b) | 0);
break; break;
case 'index': case 'index':
a = stack.pop(); a = stack.pop();

View File

@ -173,7 +173,16 @@ describe('function', function() {
// TODO floor // TODO floor
// TODO ge // TODO ge
// TODO gt // TODO gt
// TODO idiv it('divides to integer', function() {
var stack = evaluate('{ 2 3 idiv }');
var expectedStack = [0];
expect(stack).toMatchArray(expectedStack);
});
it('divides to negative integer', function() {
var stack = evaluate('{ -2 3 idiv }');
var expectedStack = [0];
expect(stack).toMatchArray(expectedStack);
});
it('duplicates index', function() { it('duplicates index', function() {
var stack = evaluate('{ 4 3 2 1 2 index }'); var stack = evaluate('{ 4 3 2 1 2 index }');
var expectedStack = [4, 3, 2, 1, 3]; var expectedStack = [4, 3, 2, 1, 3];