]> git.parisson.com Git - pdf.js.git/commitdiff
Add basic api unit testing.
authorBrendan Dahl <brendan.dahl@gmail.com>
Fri, 13 Apr 2012 00:59:30 +0000 (17:59 -0700)
committerBrendan Dahl <brendan.dahl@gmail.com>
Fri, 13 Apr 2012 00:59:30 +0000 (17:59 -0700)
test/pdfs/.gitignore
test/pdfs/basicapi.pdf [new file with mode: 0644]
test/unit/api_spec.js [new file with mode: 0644]
test/unit/jsTestDriver.conf

index 2a7c278752ca94ef7d99d5f7146fe4bf16dd30e6..e4b9fb10cca2fa23879a929648e3adfa1c5bf799 100644 (file)
@@ -31,4 +31,4 @@
 !issue1002.pdf
 !issue925.pdf
 !gradientfill.pdf
-
+!basicapi.pdf
diff --git a/test/pdfs/basicapi.pdf b/test/pdfs/basicapi.pdf
new file mode 100644 (file)
index 0000000..31ffcfe
Binary files /dev/null and b/test/pdfs/basicapi.pdf differ
diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js
new file mode 100644 (file)
index 0000000..72c6434
--- /dev/null
@@ -0,0 +1,107 @@
+/* -*- 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('api', function() {
+  var basicApiUrl = '/basicapi.pdf';
+  function waitsForPromise(promise) {
+    waitsFor(function() {
+      return promise.isResolved || promise.isRejected;
+    }, 250);
+  }
+  function expectAfterPromise(promise, successCallback) {
+    waitsForPromise(promise);
+    runs(function() {
+      promise.then(successCallback,
+      function(error, e) {
+        // Shouldn't get here.
+        expect(false).toEqual(true);
+      });
+    });
+  }
+  describe('PDFJS', function() {
+    describe('getDocument', function() {
+      it('creates pdf doc from URL', function() {
+        console.log('what is');
+        debugger;
+        var promise = PDFJS.getDocument(basicApiUrl);
+        expectAfterPromise(promise, function(data) {
+          expect(true).toEqual(true);
+        });
+      });
+      /*
+      it('creates pdf doc from typed array', function() {
+        // TODO
+      });
+      */
+    });
+  });
+  describe('PDFDocument', function() {
+    var promise = PDFJS.getDocument(basicApiUrl);
+    waitsForPromise(promise);
+    var doc;
+    runs(function() {
+      promise.then(function(data) { doc = data; });
+    });
+    it('gets number of pages', function() {
+      expect(doc.numPages).toEqual(3);
+    });
+    it('gets fingerprint', function() {
+      expect(typeof doc.fingerprint).toEqual('string');
+    });
+    it('gets page', function() {
+      var promise = doc.getPage(1);
+      expectAfterPromise(promise, function(data) {
+        expect(true).toEqual(true);
+      });
+    });
+    it('gets destinations', function() {
+      var promise = doc.getDestinations();
+      expectAfterPromise(promise, function(data) {
+        // TODO this seems to be broken for the test pdf
+      });
+    });
+    it('gets outline', function() {
+      var promise = doc.getOutline();
+      expectAfterPromise(promise, function(outline) {
+        // Two top level entries.
+        expect(outline.length).toEqual(2);
+        // Make sure some basic attributes are set.
+        expect(outline[1].title).toEqual('Chapter 1');
+        expect(outline[1].items.length).toEqual(1);
+        expect(outline[1].items[0].title).toEqual('Paragraph 1.1');
+      });
+    });
+    it('gets metadata', function() {
+      var promise = doc.getMetadata();
+      expectAfterPromise(promise, function(metadata) {
+        expect(metadata.info['Title']).toEqual('Basic API Test');
+        expect(metadata.metadata.get('dc:title')).toEqual('Basic API Test');
+      });
+    });
+  });
+  describe('Page', function() {
+    var promise = new Promise();
+    PDFJS.getDocument(basicApiUrl).then(function(doc) {
+      doc.getPage(1).then(function(data) {
+        promise.resolve(data);
+      });
+    });
+    waitsForPromise(promise);
+    var page;
+    runs(function() {
+      promise.then(function(data) {
+        page = data;
+      });
+    });
+    it('gets ref', function() {
+      expect(page.ref).toEqual({num: 15, gen: 0});
+    });
+    // TODO rotate
+    // TODO viewport
+    // TODO annotaions
+    // TOOD text content
+    // TODO operation list
+  });
+});
index 9a26df6a4d2fe501004e35891f16d962228073ff..8ff2180935cf5d45a60b3b4690a01cc3168cc98c 100644 (file)
@@ -1,32 +1,34 @@
 server: http://localhost:4224
 
+basepath: ..
+
 load:
-  - ../../external/jasmine/jasmine.js
-  - ../../external/jasmineAdapter/JasmineAdapter.js
-  - ../../src/obj.js
-  - ../../src/core.js
-  - ../../src/util.js
-  - ../../src/canvas.js
-  - ../../src/obj.js
-  - ../../src/function.js
-  - ../../src/charsets.js
-  - ../../src/cidmaps.js
-  - ../../src/colorspace.js
-  - ../../src/crypto.js
-  - ../../src/evaluator.js
-  - ../../src/fonts.js
-  - ../../src/glyphlist.js
-  - ../../src/image.js
-  - ../../src/metrics.js
-  - ../../src/parser.js
-  - ../../src/pattern.js
-  - ../../src/stream.js
-  - ../../src/worker.js
-  - ../../src/bidi.js
-  - ../../external/jpgjs/jpg.js
-  - ../unit/obj_spec.js
-  - ../unit/font_spec.js
-  - ../unit/function_spec.js
-  - ../unit/crypto_spec.js
-  - ../unit/stream_spec.js
+  - ../external/jasmine/jasmine.js
+  - ../external/jasmineAdapter/JasmineAdapter.js
+  - ../src/obj.js
+  - ../src/core.js
+  - ../src/util.js
+  - ../src/api.js
+  - ../src/canvas.js
+  - ../src/obj.js
+  - ../src/function.js
+  - ../src/charsets.js
+  - ../src/cidmaps.js
+  - ../src/colorspace.js
+  - ../src/crypto.js
+  - ../src/evaluator.js
+  - ../src/fonts.js
+  - ../src/glyphlist.js
+  - ../src/image.js
+  - ../src/metrics.js
+  - ../src/parser.js
+  - ../src/pattern.js
+  - ../src/stream.js
+  - ../src/worker.js
+  - ../src/bidi.js
+  - ../src/metadata.js
+  - ../external/jpgjs/jpg.js
+  - unit/api_spec.js
 
+gateway:
+ - {matcher: "*.pdf", server: "http://localhost:8888/test/pdfs/"}