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

View File

@ -173,7 +173,16 @@ describe('function', function() {
// TODO floor
// TODO ge
// 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() {
var stack = evaluate('{ 4 3 2 1 2 index }');
var expectedStack = [4, 3, 2, 1, 3];