[poppler] poppler/Makefile.am poppler/PageLabelInfo.cc poppler/PageLabelInfo_p.h qt4/tests

Albert Astals Cid aacid at kemper.freedesktop.org
Mon Feb 18 11:06:58 PST 2013


 poppler/Makefile.am               |    3 
 poppler/PageLabelInfo.cc          |  160 --------------------------------------
 poppler/PageLabelInfo_p.h         |  147 ++++++++++++++++++++++++++++++++++
 qt4/tests/CMakeLists.txt          |    1 
 qt4/tests/Makefile.am             |    4 
 qt4/tests/check_pagelabelinfo.cpp |   43 ++++++++++
 6 files changed, 198 insertions(+), 160 deletions(-)

New commits:
commit 164805b4471256d3915c5e49fff28c9cdcbf89e6
Author: Albert Astals Cid <aacid at kde.org>
Date:   Mon Feb 18 20:05:12 2013 +0100

    Move the commented test to a proper one

diff --git a/poppler/Makefile.am b/poppler/Makefile.am
index c25ab03..86eddff 100644
--- a/poppler/Makefile.am
+++ b/poppler/Makefile.am
@@ -330,4 +330,5 @@ libpoppler_la_SOURCES =		\
 	XpdfPluginAPI.cc
 
 EXTRA_DIST = gen-unicode-tables.py	\
-             GlobalParamsWin.cc
+             GlobalParamsWin.cc         \
+             PageLabelInfo_p.h
diff --git a/poppler/PageLabelInfo.cc b/poppler/PageLabelInfo.cc
index 7e1c155..467d85c 100644
--- a/poppler/PageLabelInfo.cc
+++ b/poppler/PageLabelInfo.cc
@@ -19,138 +19,7 @@
 #include <assert.h>
 
 #include "PageLabelInfo.h"
-
-/* http://mathworld.wolfram.com/RomanNumerals.html */
-
-static int fromRoman(const char *buffer) {
-  int digit_value, prev_digit_value, value;
-  int i;
-
-  prev_digit_value = INT_MAX;
-  value = 0;
-  for (i = 0; buffer[i] != '\0'; i++) {
-    switch (buffer[i]) {
-    case 'm':
-    case 'M':
-      digit_value = 1000;
-      break;
-    case 'd':
-    case 'D':
-      digit_value = 500;
-      break;
-    case 'c':
-    case 'C':
-      digit_value = 100;
-      break;
-    case 'l':
-    case 'L':
-      digit_value = 50;
-      break;
-    case 'x':
-    case 'X':
-      digit_value = 10;
-      break;
-    case 'v':
-    case 'V':
-      digit_value = 5;
-      break;
-    case 'i':
-    case 'I':
-      digit_value = 1;
-      break;
-    default:
-      return -1;
-    }
-
-    if (digit_value <= prev_digit_value)
-      value += digit_value;
-    else
-      value += digit_value - prev_digit_value * 2;
-    prev_digit_value = digit_value;
-  }
-
-  return value;
-}
-
-static void toRoman(int number, GooString *str, GBool uppercase) {
-  static const char uppercaseNumerals[] = "IVXLCDM";
-  static const char lowercaseNumerals[] = "ivxlcdm";
-  int divisor;
-  int i, j, k;
-  const char *wh;
-
-  if (uppercase)
-    wh = uppercaseNumerals;
-  else
-    wh = lowercaseNumerals;
-
-  divisor = 1000;
-  for (k = 3; k >= 0; k--) {
-    i = number / divisor;
-    number = number % divisor;
-
-    switch (i) {
-    case 0:
-      break;
-    case 5:
-      str->append(wh[2 * k + 1]);
-      break;
-    case 9:
-      str->append(wh[2 * k + 0]);
-      str->append(wh[ 2 * k + 2]);
-      break;
-    case 4:
-      str->append(wh[2 * k + 0]);
-      str->append(wh[2 * k + 1]);
-      break;
-    default:
-      if (i > 5) {
-       str->append(wh[2 * k + 1]);
-       i -= 5;
-      }
-      for (j = 0; j < i; j++) {
-       str->append(wh[2 * k + 0]);
-      }
-    }
-       
-    divisor = divisor / 10;
-  }
-}
-
-static int fromLatin(const char *buffer)
-{
-  int count;
-  const char *p;
-
-  for (p = buffer; *p; p++) {
-    if (*p != buffer[0])
-      return -1;
-  }
-
-  count = p - buffer;
-  if (buffer[0] >= 'a' && buffer[0] <= 'z')
-    return 26 * (count - 1) + buffer[0] - 'a' + 1;
-  if (buffer[0] >= 'A' && buffer[0] <= 'Z')
-    return 26 * (count - 1) + buffer[0] - 'A' + 1;
-
-  return -1;
-}
-
-static void toLatin(int number, GooString *str, GBool uppercase) {
-  char base, letter;
-  int i, count;
-
-  if (uppercase)
-    base = 'A';
-  else
-    base = 'a';
-
-  count = (number - 1) / 26 + 1;
-  letter = base + (number - 1) % 26;
-
-  for (i = 0; i < count; i++)
-    str->append(letter);
-}
+#include "PageLabelInfo_p.h"
 
 PageLabelInfo::Interval::Interval(Object *dict, int baseA) {
   Object obj;
@@ -359,30 +228,3 @@ GBool PageLabelInfo::indexToLabel(int index, GooString *label)
 
   return gTrue;
 }
-
-#ifdef TEST
-int main(int argc, char *argv[])
-{
-  {
-    GooString str;
-    toRoman(177, &str, gFalse);
-    assert (str.cmp("clxxvii") == 0);
-  }
-
-  {
-    GooString roman("clxxvii");
-    assert (fromRoman(roman.getCString()) == 177);
-  }
-
-  {
-    GooString str;
-    toLatin(54, &str, gFalse);
-    assert (str.cmp("bbb") == 0);
-  }
-
-  {
-    GooString latin("ddd");
-    assert (fromLatin(latin.getCString()) == 56);
-  }
-}
-#endif
diff --git a/poppler/PageLabelInfo_p.h b/poppler/PageLabelInfo_p.h
new file mode 100644
index 0000000..d3cd89f
--- /dev/null
+++ b/poppler/PageLabelInfo_p.h
@@ -0,0 +1,147 @@
+//========================================================================
+//
+// This file is under the GPLv2 or later license
+//
+// Copyright (C) 2005-2006 Kristian Høgsberg <krh at redhat.com>
+// Copyright (C) 2005, 2009 Albert Astals Cid <aacid at kde.org>
+// Copyright (C) 2011 Simon Kellner <kellner at kit.edu>
+// Copyright (C) 2012 Fabio D'Urso <fabiodurso at hotmail.it>
+//
+// To see a description of the changes please see the Changelog file that
+// came with your tarball or type make ChangeLog if you are building from git
+//
+//========================================================================
+
+/* http://mathworld.wolfram.com/RomanNumerals.html */
+
+#include "goo/GooString.h"
+
+static int fromRoman(const char *buffer) {
+  int digit_value, prev_digit_value, value;
+  int i;
+
+  prev_digit_value = INT_MAX;
+  value = 0;
+  for (i = 0; buffer[i] != '\0'; i++) {
+    switch (buffer[i]) {
+    case 'm':
+    case 'M':
+      digit_value = 1000;
+      break;
+    case 'd':
+    case 'D':
+      digit_value = 500;
+      break;
+    case 'c':
+    case 'C':
+      digit_value = 100;
+      break;
+    case 'l':
+    case 'L':
+      digit_value = 50;
+      break;
+    case 'x':
+    case 'X':
+      digit_value = 10;
+      break;
+    case 'v':
+    case 'V':
+      digit_value = 5;
+      break;
+    case 'i':
+    case 'I':
+      digit_value = 1;
+      break;
+    default:
+      return -1;
+    }
+
+    if (digit_value <= prev_digit_value)
+      value += digit_value;
+    else
+      value += digit_value - prev_digit_value * 2;
+    prev_digit_value = digit_value;
+  }
+
+  return value;
+}
+
+static void toRoman(int number, GooString *str, GBool uppercase) {
+  static const char uppercaseNumerals[] = "IVXLCDM";
+  static const char lowercaseNumerals[] = "ivxlcdm";
+  int divisor;
+  int i, j, k;
+  const char *wh;
+
+  if (uppercase)
+    wh = uppercaseNumerals;
+  else
+    wh = lowercaseNumerals;
+
+  divisor = 1000;
+  for (k = 3; k >= 0; k--) {
+    i = number / divisor;
+    number = number % divisor;
+
+    switch (i) {
+    case 0:
+      break;
+    case 5:
+      str->append(wh[2 * k + 1]);
+      break;
+    case 9:
+      str->append(wh[2 * k + 0]);
+      str->append(wh[ 2 * k + 2]);
+      break;
+    case 4:
+      str->append(wh[2 * k + 0]);
+      str->append(wh[2 * k + 1]);
+      break;
+    default:
+      if (i > 5) {
+       str->append(wh[2 * k + 1]);
+       i -= 5;
+      }
+      for (j = 0; j < i; j++) {
+       str->append(wh[2 * k + 0]);
+      }
+    }
+       
+    divisor = divisor / 10;
+  }
+}
+
+static int fromLatin(const char *buffer)
+{
+  int count;
+  const char *p;
+
+  for (p = buffer; *p; p++) {
+    if (*p != buffer[0])
+      return -1;
+  }
+
+  count = p - buffer;
+  if (buffer[0] >= 'a' && buffer[0] <= 'z')
+    return 26 * (count - 1) + buffer[0] - 'a' + 1;
+  if (buffer[0] >= 'A' && buffer[0] <= 'Z')
+    return 26 * (count - 1) + buffer[0] - 'A' + 1;
+
+  return -1;
+}
+
+static void toLatin(int number, GooString *str, GBool uppercase) {
+  char base, letter;
+  int i, count;
+
+  if (uppercase)
+    base = 'A';
+  else
+    base = 'a';
+
+  count = (number - 1) / 26 + 1;
+  letter = base + (number - 1) % 26;
+
+  for (i = 0; i < count; i++)
+    str->append(letter);
+}
diff --git a/qt4/tests/CMakeLists.txt b/qt4/tests/CMakeLists.txt
index 187870f..9512617 100644
--- a/qt4/tests/CMakeLists.txt
+++ b/qt4/tests/CMakeLists.txt
@@ -57,6 +57,7 @@ qt4_add_qtest(check_permissions check_permissions.cpp)
 qt4_add_qtest(check_search check_search.cpp)
 qt4_add_qtest(check_actualtext check_actualtext.cpp)
 qt4_add_qtest(check_lexer check_lexer.cpp)
+qt4_add_qtest(check_pagelabelinfo check_pagelabelinfo.cpp)
 qt4_add_qtest(check_goostring check_goostring.cpp)
 if (NOT WIN32)
   qt4_add_qtest(check_strings check_strings.cpp)
diff --git a/qt4/tests/Makefile.am b/qt4/tests/Makefile.am
index 3dc6e13..05d2754 100644
--- a/qt4/tests/Makefile.am
+++ b/qt4/tests/Makefile.am
@@ -139,6 +139,10 @@ check_lexer_SOURCES = check_lexer.cpp
 check_lexer.$(OBJEXT): check_lexer.moc
 check_lexer_LDADD = $(LDADDS) $(POPPLER_QT4_TEST_LIBS)
 
+check_pagelabelinfo_SOURCES = check_pagelabelinfo.cpp
+check_pagelabelinfo.$(OBJEXT): check_pagelabelinfo.moc
+check_pagelabelinfo_LDADD = $(LDADDS) $(POPPLER_QT4_TEST_LIBS)
+
 check_goostring_SOURCES = check_goostring.cpp
 check_goostring.$(OBJEXT): check_goostring.moc
 check_goostring_LDADD = $(LDADDS) $(POPPLER_QT4_TEST_LIBS)
diff --git a/qt4/tests/check_pagelabelinfo.cpp b/qt4/tests/check_pagelabelinfo.cpp
new file mode 100644
index 0000000..4eb1ec3
--- /dev/null
+++ b/qt4/tests/check_pagelabelinfo.cpp
@@ -0,0 +1,43 @@
+#include <QtTest/QtTest>
+
+#include "PageLabelInfo_p.h"
+
+class TestPageLabelInfo : public QObject
+{
+    Q_OBJECT
+private slots:
+    void testToRoman();
+    void testFromRoman();
+    void testToLatin();
+    void testFromLatin();
+};
+
+void TestPageLabelInfo::testToRoman()
+{
+    GooString str;
+    toRoman(177, &str, gFalse);
+    QCOMPARE (str.getCString(), "clxxvii");
+}
+
+void TestPageLabelInfo::testFromRoman()
+{
+    GooString roman("clxxvii");
+    QCOMPARE(fromRoman(roman.getCString()), 177);
+}
+
+void TestPageLabelInfo::testToLatin()
+{
+    GooString str;
+    toLatin(54, &str, gFalse);
+    QCOMPARE(str.getCString(), "bbb");
+}
+
+void TestPageLabelInfo::testFromLatin()
+{
+    GooString latin("ddd");
+    QCOMPARE(fromLatin(latin.getCString()), 56);
+}
+
+QTEST_MAIN(TestPageLabelInfo)
+#include "check_pagelabelinfo.moc"
+


More information about the poppler mailing list