@ -48,20 +48,36 @@ describe('evaluator', function() {
@@ -48,20 +48,36 @@ describe('evaluator', function() {
function runOperatorListCheck ( evaluator , stream , resources , callback ) {
var result = new OperatorList ( ) ;
var task = new WorkerTask ( 'OperatorListCheck' ) ;
evaluator . getOperatorList ( stream , task , resources , result ) . then (
function ( ) {
evaluator . getOperatorList ( {
stream ,
task ,
resources ,
operatorList : result ,
} ) . then ( function ( ) {
callback ( result ) ;
} ) ;
}
var partialEvaluator ;
beforeAll ( function ( done ) {
partialEvaluator = new PartialEvaluator ( {
pdfManager : new PdfManagerMock ( ) ,
xref : new XrefMock ( ) ,
handler : new HandlerMock ( ) ,
pageIndex : 0 ,
} ) ;
done ( ) ;
} ) ;
afterAll ( function ( ) {
partialEvaluator = null ;
} ) ;
describe ( 'splitCombinedOperations' , function ( ) {
it ( 'should reject unknown operations' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( 'fTT' ) ;
runOperatorListCheck ( evaluator , stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 1 ) ;
@ -72,11 +88,8 @@ describe('evaluator', function() {
@@ -72,11 +88,8 @@ describe('evaluator', function() {
} ) ;
it ( 'should handle one operations' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( 'Q' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 1 ) ;
@ -86,13 +99,11 @@ describe('evaluator', function() {
@@ -86,13 +99,11 @@ describe('evaluator', function() {
} ) ;
it ( 'should handle two glued operations' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var resources = new ResourcesMock ( ) ;
resources . Res1 = { } ;
var stream = new StringStream ( '/Res1 DoQ' ) ;
runOperatorListCheck ( evaluator , stream , resources , function ( result ) {
runOperatorListCheck ( partialEvaluator , stream , resources ,
function ( result ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 2 ) ;
expect ( result . fnArray [ 0 ] ) . toEqual ( OPS . paintXObject ) ;
@ -102,11 +113,8 @@ describe('evaluator', function() {
@@ -102,11 +113,8 @@ describe('evaluator', function() {
} ) ;
it ( 'should handle tree glued operations' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( 'fff' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 3 ) ;
@ -118,13 +126,11 @@ describe('evaluator', function() {
@@ -118,13 +126,11 @@ describe('evaluator', function() {
} ) ;
it ( 'should handle three glued operations #2' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var resources = new ResourcesMock ( ) ;
resources . Res1 = { } ;
var stream = new StringStream ( 'B*Bf*' ) ;
runOperatorListCheck ( evaluator , stream , resources , function ( result ) {
runOperatorListCheck ( partialEvaluator , stream , resources ,
function ( result ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 3 ) ;
expect ( result . fnArray [ 0 ] ) . toEqual ( OPS . eoFillStroke ) ;
@ -135,11 +141,8 @@ describe('evaluator', function() {
@@ -135,11 +141,8 @@ describe('evaluator', function() {
} ) ;
it ( 'should handle glued operations and operands' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( 'f5 Ts' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 2 ) ;
@ -153,11 +156,8 @@ describe('evaluator', function() {
@@ -153,11 +156,8 @@ describe('evaluator', function() {
} ) ;
it ( 'should handle glued operations and literals' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( 'trueifalserinulln' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 3 ) ;
@ -177,11 +177,8 @@ describe('evaluator', function() {
@@ -177,11 +177,8 @@ describe('evaluator', function() {
describe ( 'validateNumberOfArgs' , function ( ) {
it ( 'should execute if correct number of arguments' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( '5 1 d0' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( result . argsArray [ 0 ] [ 0 ] ) . toEqual ( 5 ) ;
expect ( result . argsArray [ 0 ] [ 1 ] ) . toEqual ( 1 ) ;
@ -190,11 +187,8 @@ describe('evaluator', function() {
@@ -190,11 +187,8 @@ describe('evaluator', function() {
} ) ;
} ) ;
it ( 'should execute if too many arguments' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( '5 1 4 d0' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( result . argsArray [ 0 ] [ 0 ] ) . toEqual ( 1 ) ;
expect ( result . argsArray [ 0 ] [ 1 ] ) . toEqual ( 4 ) ;
@ -203,11 +197,8 @@ describe('evaluator', function() {
@@ -203,11 +197,8 @@ describe('evaluator', function() {
} ) ;
} ) ;
it ( 'should execute if nested commands' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( '/F2 /GS2 gs 5.711 Tf' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( result . fnArray . length ) . toEqual ( 3 ) ;
expect ( result . fnArray [ 0 ] ) . toEqual ( OPS . setGState ) ;
@ -221,11 +212,8 @@ describe('evaluator', function() {
@@ -221,11 +212,8 @@ describe('evaluator', function() {
} ) ;
} ) ;
it ( 'should skip if too few arguments' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( '5 d0' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( result . argsArray ) . toEqual ( [ ] ) ;
expect ( result . fnArray ) . toEqual ( [ ] ) ;
@ -233,11 +221,8 @@ describe('evaluator', function() {
@@ -233,11 +221,8 @@ describe('evaluator', function() {
} ) ;
} ) ;
it ( 'should close opened saves' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( 'qq' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 4 ) ;
@ -249,11 +234,8 @@ describe('evaluator', function() {
@@ -249,11 +234,8 @@ describe('evaluator', function() {
} ) ;
} ) ;
it ( 'should skip paintXObject if name is missing' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( '/ Do' ) ;
runOperatorListCheck ( e valuator, stream , new ResourcesMock ( ) ,
runOperatorListCheck ( partialEvaluator , stream , new ResourcesMock ( ) ,
function ( result ) {
expect ( result . argsArray ) . toEqual ( [ ] ) ;
expect ( result . fnArray ) . toEqual ( [ ] ) ;
@ -261,9 +243,6 @@ describe('evaluator', function() {
@@ -261,9 +243,6 @@ describe('evaluator', function() {
} ) ;
} ) ;
it ( 'should skip paintXObject if subtype is PS' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var xobjStreamDict = new Dict ( ) ;
xobjStreamDict . set ( 'Subtype' , Name . get ( 'PS' ) ) ;
var xobjStream = new Stream ( [ ] , 0 , 0 , xobjStreamDict ) ;
@ -275,7 +254,8 @@ describe('evaluator', function() {
@@ -275,7 +254,8 @@ describe('evaluator', function() {
resources . set ( 'XObject' , xobjs ) ;
var stream = new StringStream ( '/Res1 Do' ) ;
runOperatorListCheck ( evaluator , stream , resources , function ( result ) {
runOperatorListCheck ( partialEvaluator , stream , resources ,
function ( result ) {
expect ( result . argsArray ) . toEqual ( [ ] ) ;
expect ( result . fnArray ) . toEqual ( [ ] ) ;
done ( ) ;
@ -285,34 +265,35 @@ describe('evaluator', function() {
@@ -285,34 +265,35 @@ describe('evaluator', function() {
describe ( 'thread control' , function ( ) {
it ( 'should abort operator list parsing' , function ( done ) {
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( 'qqQQ' ) ;
var resources = new ResourcesMock ( ) ;
var result = new OperatorList ( ) ;
var task = new WorkerTask ( 'OperatorListAbort' ) ;
task . terminate ( ) ;
evaluator . getOperatorList ( stream , task , resources , result ) . catch (
function ( ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 0 ) ;
done ( ) ;
} ) ;
partialEvaluator . getOperatorList ( {
stream ,
task ,
resources ,
operatorList : result ,
} ) . catch ( function ( ) {
expect ( ! ! result . fnArray && ! ! result . argsArray ) . toEqual ( true ) ;
expect ( result . fnArray . length ) . toEqual ( 0 ) ;
done ( ) ;
} ) ;
} ) ;
it ( 'should abort text parsing parsing' , function ( done ) {
var resources = new ResourcesMock ( ) ;
var evaluator = new PartialEvaluator ( new PdfManagerMock ( ) ,
new XrefMock ( ) , new HandlerMock ( ) ,
'prefix' ) ;
var stream = new StringStream ( 'qqQQ' ) ;
var task = new WorkerTask ( 'TextContentAbort' ) ;
task . terminate ( ) ;
evaluator . getTextContent ( stream , task , resources ) . catch (
function ( ) {
expect ( true ) . toEqual ( true ) ;
done ( ) ;
} ) ;
partialEvaluator . getTextContent ( {
stream ,
task ,
resources ,
} ) . catch ( function ( ) {
expect ( true ) . toEqual ( true ) ;
done ( ) ;
} ) ;
} ) ;
} ) ;