]> git.parisson.com Git - pdf.js.git/commitdiff
Adds evaluator tests
authorYury Delendik <ydelendik@mozilla.com>
Thu, 10 May 2012 21:11:27 +0000 (16:11 -0500)
committerYury Delendik <ydelendik@mozilla.com>
Thu, 10 May 2012 21:11:27 +0000 (16:11 -0500)
test/unit/evaluator_spec.js [new file with mode: 0644]
test/unit/unit_test.html

diff --git a/test/unit/evaluator_spec.js b/test/unit/evaluator_spec.js
new file mode 100644 (file)
index 0000000..4ee0768
--- /dev/null
@@ -0,0 +1,83 @@
+/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
+
+'use strict';
+
+describe('evaluator', function() {
+  function XrefMock(queue) {
+    this.queue = queue;
+  }
+  XrefMock.prototype = {
+    fetchIfRef: function() {
+      return this.queue.shift();
+    }
+  };
+  function HandlerMock() {
+    this.inputs = [];
+  }
+  HandlerMock.prototype = {
+    send: function(name, data) {
+      this.inputs({name: name, data: data});
+    }
+  };
+  function ResourcesMock() { }
+  ResourcesMock.prototype = {
+    get: function(name) {
+      return this[name];
+    }
+  };
+
+  describe('splitCombinedOperations', function() {
+    it('should reject unknown operations', function() {
+      var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
+                                           'prefix');
+      var stream = new StringStream('qTT');
+      var thrown = false;
+      try {
+        evaluator.getOperatorList(stream, new ResourcesMock(), []);
+      } catch (e) {
+        thrown = e;
+      }
+      expect(thrown).toNotEqual(false);
+    });
+
+    it('should handle one operations', function() {
+      var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
+                                           'prefix');
+      var stream = new StringStream('Q');
+      var result = evaluator.getOperatorList(stream, new ResourcesMock(), []);
+
+      expect(!!result.fnArray && !!result.argsArray).toEqual(true);
+      expect(result.fnArray.length).toEqual(1);
+      expect(result.fnArray[0]).toEqual('restore');
+    });
+
+    it('should handle two glued operations', function() {
+      var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
+                                           'prefix');
+      var resources = new ResourcesMock();
+      resources.Res1 = {};
+      var stream = new StringStream('/Res1 DoQ');
+      var result = evaluator.getOperatorList(stream, resources, []);
+
+      expect(!!result.fnArray && !!result.argsArray).toEqual(true);
+      expect(result.fnArray.length).toEqual(2);
+      expect(result.fnArray[0]).toEqual('paintXObject');
+      expect(result.fnArray[1]).toEqual('restore');
+    });
+
+    it('should handle tree glued operations', function() {
+      var evaluator = new PartialEvaluator(new XrefMock(), new HandlerMock(),
+                                           'prefix');
+      var stream = new StringStream('qqq');
+      var result = evaluator.getOperatorList(stream, new ResourcesMock(), []);
+
+      expect(!!result.fnArray && !!result.argsArray).toEqual(true);
+      expect(result.fnArray.length).toEqual(3);
+      expect(result.fnArray[0]).toEqual('save');
+      expect(result.fnArray[1]).toEqual('save');
+      expect(result.fnArray[2]).toEqual('save');
+    });
+  });
+});
+
index cdd0c297f9963a417ad4aef20adeaa211b262108..ca0a1aed18b1a009bf8bdb647a74f43d5922ff98 100644 (file)
@@ -39,6 +39,7 @@
   <script type="text/javascript" src="font_spec.js"></script>
   <script type="text/javascript" src="function_spec.js"></script>
   <script type="text/javascript" src="crypto_spec.js"></script>
+  <script type="text/javascript" src="evaluator_spec.js"></script>
   <script type="text/javascript" src="stream_spec.js"></script>
   <script type="text/javascript" src="api_spec.js"></script>
   <script type="text/javascript" src="metadata_spec.js"></script>