From 67a171d9d7972ba345be04aabf7680714214fb2f Mon Sep 17 00:00:00 2001 From: Leandro Lucarella Date: Wed, 13 Mar 2013 22:11:32 +0100 Subject: [PATCH] Add contents of source/proj/mutest --- source/proj/mutest/index.html | 1 + source/proj/mutest/manual.html | 909 +++ source/proj/mutest/manual.pdf | 6874 +++++++++++++++++ source/proj/mutest/releases/.htaccess | 1 + source/proj/mutest/releases/manual-1.0.html | 873 +++ source/proj/mutest/releases/manual-1.0.pdf | Bin 0 -> 143526 bytes source/proj/mutest/releases/manual.html | 1 + source/proj/mutest/releases/manual.pdf | 1 + source/proj/mutest/releases/mutest-1.0.tar.gz | Bin 0 -> 14409 bytes source/proj/mutest/releases/mutest.tar.gz | 1 + 10 files changed, 8661 insertions(+) create mode 120000 source/proj/mutest/index.html create mode 100644 source/proj/mutest/manual.html create mode 100644 source/proj/mutest/manual.pdf create mode 100644 source/proj/mutest/releases/.htaccess create mode 100644 source/proj/mutest/releases/manual-1.0.html create mode 100644 source/proj/mutest/releases/manual-1.0.pdf create mode 120000 source/proj/mutest/releases/manual.html create mode 120000 source/proj/mutest/releases/manual.pdf create mode 100644 source/proj/mutest/releases/mutest-1.0.tar.gz create mode 120000 source/proj/mutest/releases/mutest.tar.gz diff --git a/source/proj/mutest/index.html b/source/proj/mutest/index.html new file mode 120000 index 0000000..084d26d --- /dev/null +++ b/source/proj/mutest/index.html @@ -0,0 +1 @@ +manual.html \ No newline at end of file diff --git a/source/proj/mutest/manual.html b/source/proj/mutest/manual.html new file mode 100644 index 0000000..0221ff4 --- /dev/null +++ b/source/proj/mutest/manual.html @@ -0,0 +1,909 @@ + + + + + + +mutest - A simple micro unit testing framework for C + + + + + + +
+

mutest - A simple micro unit testing framework for C

+ +++ + + + + + + + + + + + +
Author:Leandro Lucarella
Contact:llucax@gmail.com
Version:1.0
Date:2013-02-17
Copyright:Leandro Lucarella (2008), released under the BOLA license
+
+

Abstract

+

mutest is a micro unit testing framework for C (with some +C++ support). It's mostly an idea (it even comes with +2 implementations of the idea!) with the goal of being easy to use +(just write your test cases grouped in test suites and you're +set) and so small and simple that you don't mind to copy the files to +your project and just use it (i.e., no dependencies).

+

The idea is simple: a source file is a test suite, a function is +a test case (special functions can be used for test suite +initialization and termination), which can can have several checks. +Checks comes in 2 flavors, one that only prints an error, and one that +terminates the current test case too. A (normally) automated test +program run all the test suites and print some stats. It fails +(returns non-zero) if any test suite fails.

+

+ +

+
+ +
+

1.   Installation

+

Download the latest distribution tarball and uncompress it.

+

You can also download any release from the releases directory or get it +using Git directly from the Git repository.

+

You can get this manual too, or a PDF version of it.

+

To actually install mutest run:

+
+$ make install
+
+

Default installation path is /usr/local (because of that, you'll probably +need superuser privileges to install to the default location). You can override +that by passing the prefix make variable, for example:

+
+$ make prefix=/opt/mutest install
+
+

If you want to install just the docs, you can do:

+
+$ make install-doc
+
+

Or even install-readme, install-html or install-pdf if you are too +picky.

+

If you want to install just one particular implementation, to can use the +install-c and install-py targets.

+
+
+

2.   Quick Sample

+

You can find some samples in the sample directory.

+

This is an example taken from there. A simple module called factorial.c +with its corresponding test suite (factorial_test.c).

+

You can see some C++ support in the exception_test.cpp test suite.

+
+

2.1.   factorial.c

+
+/*
+ * This file is part of mutest, a simple micro unit testing framework for C.
+ *
+ * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
+ * under the BOLA license, please see the LICENSE file or visit:
+ * http://blitiri.com.ar/p/bola/
+ *
+ * This is an example module that calculates a factorial.
+ *
+ * Please, read the README file for more details.
+ */
+
+unsigned factorial(unsigned x) {
+        if (x <= 1)
+                return 1;
+        return x * factorial(x-1);
+}
+
+
+
+

2.2.   factorial_test.c

+
+/*
+ * This file is part of mutest, a simple micro unit testing framework for C.
+ *
+ * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
+ * under the BOLA license, please see the LICENSE file or visit:
+ * http://blitiri.com.ar/p/bola/
+ *
+ * This is the factorial module test suite. Each (public) function starting
+ * with mu_test will be picked up by mkmutest as a test case.
+ *
+ * Please, read the README file for more details.
+ */
+
+#include "factorial.h"
+
+#include "../mutest.h"
+
+void mu_test_factorial_zero() {
+        unsigned x = factorial(0);
+        mu_check(x == 1);
+}
+
+void mu_test_factorial_one() {
+        unsigned x = factorial(1);
+        /* this test is wrong on purpose, to see how it fails */
+        mu_check(x == 2);
+}
+
+void mu_test_factorial_positive() {
+        unsigned x = factorial(2);
+        /* this test is wrong on purpose, to see how it fails */
+        mu_check(x == 3);
+
+        x = factorial(3);
+        /* we don't want to continue if this fails, because the next result
+         * depends on this one. This one will succeed. */
+        mu_ensure(x == 6);
+
+        x = factorial(x);
+        mu_check(x == 720);
+
+        x = factorial(4);
+        mu_ensure(x == 6); /* same as before, but this one will fail. */
+
+        x = factorial(x-15); /* and this will never be executed */
+        mu_check(x == 362881); /* but if excecuted, will fail */
+}
+
+
+
+

2.3.   exception_test.cpp

+
+/*
+ * This file is part of mutest, a simple micro unit testing framework for C.
+ *
+ * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
+ * under the BOLA license, please see the LICENSE file or visit:
+ * http://blitiri.com.ar/p/bola/
+ *
+ * This is a C++ module test suite. It shows how to use checks involving
+ * exceptions.
+ *
+ * Please, read the README file for more details.
+ */
+
+#include <stdexcept> // std::out_of_range
+#include <vector> // std::vector
+
+#include "../mutest.h"
+
+extern "C" {
+
+void mu_test_exceptions() {
+        std::vector<int> v(1);
+        // ok
+        mu_check(v.at(0) == 0);
+        // throws! This fails
+        mu_check(v.at(1) == 0);
+        // ok, we expect the exception to be thrown, and it does
+        mu_echeck(std::out_of_range, v.at(1));
+        // fails! We expect this to throw, but it doesn't
+        mu_echeck(std::out_of_range, v.at(0));
+        // fails again, but this time the show is over (note the "ensure")
+        mu_eensure(std::out_of_range, v.at(0));
+        // this will never be executed (it should fail if it is)
+        mu_check(v.empty());
+}
+
+} // extern "C"
+
+
+
+
+

3.   Concepts

+

mutest is about 4 simple concepts: test program, test suite, test +case and checks. Well, to be honest you probably will need test suite +initialization and termination too =)

+
+

3.1.   Test Program

+

A test program is the higher level unit of mutest. The test program is +the one in charge of running all your tests. Probably one of the more important +features of mutest is that you are not supposed to bother about the test +program. So, different implementations have different ways to tackle this. +Some need more or less interactions from your part, and each have their pros +and cons.

+

But this is all you need to know for now, for more details see how the test +program is implemented by your implementation of choice.

+
+
+

3.2.   Test Suite

+

A test suite is the higher level unit of mutest that you should +care about =). Is not much more than a way to group test cases. Code-wise, +a test suite is a C (or C++) module (or compilation unit). Not clear enough? +A unit test is an object file (could be a shared object depending on the +implementation). This module should have one or more test cases and it +could have any number (including zero) of initialization and termination +functions.

+

A test suite, is inspected by the test program for test cases and +initialization and termination functions, and run them.

+

A test suite fail if one or more test cases fail, and it's skipped if one or +more initialization functions fail (or, depending on the implementation, if +the test suite can't be loaded at all).

+
+
+

3.3.   Test Case

+

A test case is just a plain function with a special signature and name. +A test case function name must start with mu_test, and take no arguments +and return nothing. For example:

+
+void mu_test_something(void);
+
+

A test case (probably) only make sense if it has checks. A test case succeed +only if all its checks succeed too.

+

Test are executed in an implementation-dependant order, but usually the +default order is alphabetical.

+
+
+

3.4.   Checks

+

Checks are assertions that a test case must pass (a boolean expression that +must evaluate to true). There are 2 big flavors of checks: check and +ensure. check just print an error (and mark the test case as +failed) and ensure halt the test case execution, jumping to the next +one.

+

For better C++ support there are check macros that assert that a specified +exception is thrown (instead of check for a boolean expression to evaluate to +true).

+

You can take a look at the reference to see the different flavors of check +macros in more detail.

+
+
+

3.5.   Initialization

+

Sometimes you need to setup some environment shared between all the test +cases in a test suite. You can use initialization functions for this.

+

An initialization function, like a test case, is a plain C function with +a special name and signature. The name must start with mu_init and it must +take no arguments, and return an error code (0 being success). For +example:

+
+int mu_init_something(void);
+
+

All initialization functions are executed before any test case, in an +implementation-dependant order, and if one of them fail (returns non-zero), +the whole test suite is skipped immediately.

+
+
+

3.6.   Termination

+

Termination functions are just like initialization functions, but they're +executed after the test cases, their names start with mu_term and +they return nothing. For example:

+
+void mu_term_something(void);
+
+
+
+
+

4.   C++ Support

+

You can use mutest with C++, the only care you must take is that, because of +C++ name mangling (and mutest relaying on function names), you must +declare your test cases and initialization and termination functions as +extern "C" (see exception_test.cpp for an example).

+

Checks become exception-safe when using mutest with a C++ compiler, and +2 extra checks designed for C++ get defined (mu_echeck() and +mu_eensure()). They assert that an expression throws a particular exception.

+
+
+

5.   Implementations

+

There are 2 big groups of possible implementations that I can think +of: static and dynamic.

+

mutest comes with one implementation of each group.

+
+

5.1.   Static Implementations

+

Static implementations can be only written in C/C++ (or other language that is +link-compatible with C, like the D Programming Language, but since one of +the main goals of mutest is avoid unnecessary dependencies, you probably +don't want to depend on an extra language/compiler to run your tests =).

+

The main advantage is better debugging support, because you can run the test +program in a standard debugger and see what happens with test cases very +naturally.

+

The main disadvantage is, the test suites must be figured out in +compile-time, usually using some kind of code generation (if you want to +avoid writing repetitive code yourself). There's also a limitation in the test +case, initialization and termination functions names: they should be unique +for all the test program.

+
+

5.1.1.   C implementation

+

mutest comes with a C static implementation. Only 3 files are needed: +mutest.c (the user-independent part of the test program), mkmutest +(a bash script for generating the user-dependent part of the test program) +and mutest.h (the header file that test suites should include).

+

You can copy this 3 files to your project or install them at system-level and +use them globally.

+

The procedure is simple, You should compile you test suites, mutest.c +and the generated output of mkmutest as object files and link them +together.

+

For example:

+
+$ cc -c -o mutest.o mutest.c
+$ cc -c -o test1.o test1.c
+$ cc -c -o test2.o test2.c
+$ mkmutest mutest.h test1.o test2.o | cc -xc -c -o runmutest.o -
+$ cc -o testprg mutest.o test1.o test2.o runmutest.o
+
+

Then you can run the test program invoking it with no arguments:

+
+$ ./testprg
+
+
+

5.1.1.1.   mkmutest Invocation

+

This small script take 1 mandatory positional argument: the path to the +mutest.h file. All remaining positional arguments should be object files +representing test suites.

+
+
+

5.1.1.2.   Test Program Invocation

+

The test program can be invoked without arguments, but can take some extra +options:

+
+
-v
+

Be verbose. This is accumulative, when you add extra -v you will +get extra verbosity.

+

By default, you just get failed checks printed. If you use a single +-v, a summary of failed/passed test suites, test cases and +checks will be printed. If an extra -v is used, you'll see the current +test suite being executed. Another -v and you'll get the current +test case, and another one, and you'll get each check.

+
+
+
+
+

5.1.1.3.   Dependencies

+

Even when dependencies are kept minimal, there always be a few ;)

+

To use this implementation you just need:

+
    +
  • A C compiler (you already needed that, so...)
  • +
  • The nm program (from GNU Binutils, included in virtually any *NIX)
  • +
  • The GNU Bash shell interpreter (also included in virtually any *NIX)
  • +
+
+
+
+
+

5.2.   Dynamic Implementations

+

Dynamic implementations, on the other hand, can be written in any language that +can access to shared objects. The idea is to inspect a shared object for test +suites and run them, without requiring any information about test suites +at compile time.

+

There are several advantages in this kind of implementations. The dynamic +nature let you completely separate the test program from the user-written +test suites and you can choose at run-time what test suites to execute +by just selecting the correct shared objects. Also, test case, +initialization and termination functions names only have to be unique in the +scope of the test suites, because test suites are completely isolated in +separate shared objects.

+

But everything comes at a price, and the higher price to pay is +debuggability. It's a little harder to plug a debugger to a shared object.

+
+

5.2.1.   Python implementation

+

This implementation is much simpler and elegant than the C implementation. +Only 2 files are needed: mutest (test program written in Python using +ctypes module to access the shared object symbols) and mutest.h (the +header file that test suites should include).

+

Since both implementations provided by mutest share the same mutest.h, +you should define the MUTEST_PY macro when compiling the test suites if +you will run them using this implementation.

+

As with the C implementation, you can copy this 2 files to your project or +install them at system-level and use them globally.

+

The procedure is even simpler than the C implementation: compile and link +you test suites as shared objects and then run the mutest program +passing the shared objects as arguments. For example:

+
+$ cc -c -fPIC -DMUTEST_PY -o test1.o test1.c
+$ cc -shared -o test1.so test1.o
+$ cc -c -fPIC -DMUTEST_PY -o test2.o test2.c
+$ cc -shared -o test2.so test2.o
+$ mutest test1.so test2.so
+
+

That's it.

+
+

5.2.1.1.   mutest Invocation

+

mutest program takes test suites shared objects to run as positional +arguments. It accepts the same options as the C implementation's test +program and some extra options are accepted too:

+
+
--verbose
+
Alias for -v.
+
-q, --quiet
+
Be quiet (no output is shown at all).
+
-s, --search
+
Search for test suites (*.so) in the current directory and add them +to the list of test suites to run.
+
-h, --help
+
Show a help message and exit.
+
+
+
+

5.2.1.2.   Dependencies

+

As with the C implementation, some minor dependencies are needed:

+
    +
  • Python (2.5 or later)
  • +
  • The nm program (from GNU Binutils, included in virtually any *NIX)
  • +
+

You will need a C compiler for building the test suites too, but technically +is not needed by mutest itself ;)

+
+
+
+
+
+

6.   Reference

+
+

6.1.   mu_check()

+
+
Synopsis
+
mu_check(expression)
+
Description
+
Check that the expression evaluates to true. Continue with the +test case if fail.
+
Availability
+
Always
+
Example
+
+void mu_test(void)
+{
+    mu_check(5 == 4); /* fail */
+    mu_check(5 == 5); /* excecuted, pass */
+}
+
+
+
+
+
+

6.2.   mu_ensure()

+
+
Synopsis
+
mu_ensure(expression)
+
Description
+
Check that the expression evaluates to true. Interrupt the test +case if fail.
+
Availability
+
Always
+
Example
+
+void mu_test(void)
+{
+    mu_ensure(5 == 4); /* fail */
+    mu_check(5 == 5); /* not excecuted */
+}
+
+
+
+
+
+

6.3.   mu_echeck()

+
+
Synopsis
+
mu_echeck(class, expression)
+
Description
+
Check that the expression throws a specific exception class (or +subclass). Continue with the test case if fail.
+
Availability
+
C++ only
+
Example
+
+#include <stdexcept>
+
+extern "C"
+{
+    void mu_test(void)
+    {
+        mu_echeck(std::exception, true); /* fail */
+        mu_echeck(std::exception,
+                throw std::runtime_error("!")); /* excecuted, pass */
+    }
+}
+
+
+
+
+
+

6.4.   mu_eensure()

+
+
Synopsis
+
mu_eensure(class, expression)
+
Description
+
Check that the expression throws a specific exception class (or +subclass). Interrupt the test case if fail.
+
Availability
+
C++ only
+
Example
+
+#include <stdexcept>
+
+extern "C"
+{
+    void mu_test(void)
+    {
+        mu_eensure(std::exception, true); /* fail */
+        mu_echeck(std::exception,
+                throw std::runtime_error("!")); /* not excecuted */
+    }
+}
+
+
+
+
+
+
+

7.   About

+

This manual was written using reStructuredText.

+ + + + + +
+
+ + diff --git a/source/proj/mutest/manual.pdf b/source/proj/mutest/manual.pdf new file mode 100644 index 0000000..4a18909 --- /dev/null +++ b/source/proj/mutest/manual.pdf @@ -0,0 +1,6874 @@ +%PDF-1.4 +%“Œ‹ž ReportLab Generated PDF document http://www.reportlab.com +% 'BasicFonts': class PDFDictionary +1 0 obj +% The standard fonts dictionary +<< /F1 2 0 R + /F2 3 0 R + /F3 4 0 R + /F4 7 0 R + /F5 57 0 R + /F6 171 0 R + /F7 174 0 R >> +endobj +% 'F1': class PDFType1Font +2 0 obj +% Font Helvetica +<< /BaseFont /Helvetica + /Encoding /WinAnsiEncoding + /Name /F1 + /Subtype /Type1 + /Type /Font >> +endobj +% 'F2': class PDFType1Font +3 0 obj +% Font Helvetica-BoldOblique +<< /BaseFont /Helvetica-BoldOblique + /Encoding /WinAnsiEncoding + /Name /F2 + /Subtype /Type1 + /Type /Font >> +endobj +% 'F3': class PDFType1Font +4 0 obj +% Font Helvetica-Bold +<< /BaseFont /Helvetica-Bold + /Encoding /WinAnsiEncoding + /Name /F3 + /Subtype /Type1 + /Type /Font >> +endobj +% 'Annot.NUMBER1': class PDFDictionary +5 0 obj +<< /A << /S /URI + /Type /Action + /URI (mailto:llucax@gmail.com) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 153.7323 + 680.7736 + 526.5827 + 692.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER2': class PDFDictionary +6 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://blitiri.com.ar/p/bola/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 357.1723 + 635.7736 + 386.6323 + 647.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'F4': class PDFType1Font +7 0 obj +% Font Helvetica-Oblique +<< /BaseFont /Helvetica-Oblique + /Encoding /WinAnsiEncoding + /Name /F4 + /Subtype /Type1 + /Type /Font >> +endobj +% 'Annot.NUMBER3': class PDFDictionary +8 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://en.wikipedia.org/wiki/Unit_testing) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 141.0429 + 587.7736 + 192.1829 + 599.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER4': class LinkAnnotation +9 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 768.5236 + 0 ] + /Rect [ 317.2029 + 587.7736 + 372.2329 + 599.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER5': class LinkAnnotation +10 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 651.5236 + 0 ] + /Rect [ 91.59291 + 575.7736 + 167.1729 + 587.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER6': class LinkAnnotation +11 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 441.7529 + 575.7736 + 489.5529 + 587.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER7': class LinkAnnotation +12 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 73.25291 + 563.7736 + 121.0529 + 575.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER8': class LinkAnnotation +13 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 223.8629 + 539.7736 + 263.8829 + 551.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER9': class LinkAnnotation +14 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 333.9229 + 539.7736 + 376.7229 + 551.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER10': class LinkAnnotation +15 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 62.69291 + 527.7736 + 102.7129 + 539.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER11': class LinkAnnotation +16 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 105.4929 + 527.7736 + 159.9529 + 539.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER12': class LinkAnnotation +17 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 181.6236 + 0 ] + /Rect [ 179.4129 + 527.7736 + 228.8729 + 539.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER13': class LinkAnnotation +18 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 363.3729 + 527.7736 + 394.4929 + 539.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER14': class LinkAnnotation +19 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 400.0529 + 527.7736 + 436.1729 + 539.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER15': class LinkAnnotation +20 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 348.9529 + 515.7736 + 391.7529 + 527.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER16': class LinkAnnotation +21 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 62.69291 + 503.7736 + 121.6029 + 515.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER17': class LinkAnnotation +22 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 168.2929 + 503.7736 + 216.0929 + 515.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER18': class LinkAnnotation +23 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 450.0729 + 503.7736 + 492.8729 + 515.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page1': class PDFPage +24 0 obj +% Page dictionary +<< /Annots [ 5 0 R + 6 0 R + 8 0 R + 9 0 R + 10 0 R + 11 0 R + 12 0 R + 13 0 R + 14 0 R + 15 0 R + 16 0 R + 17 0 R + 18 0 R + 19 0 R + 20 0 R + 21 0 R + 22 0 R + 23 0 R ] + /Contents 255 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Annot.NUMBER19': class LinkAnnotation +25 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 99 0 R + /XYZ + 62.69291 + 204.0236 + 0 ] + /Rect [ 62.69291 + 723.7736 + 132.1629 + 735.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER20': class LinkAnnotation +26 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 99 0 R + /XYZ + 62.69291 + 204.0236 + 0 ] + /Rect [ 527.0227 + 723.7736 + 532.5827 + 735.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER21': class LinkAnnotation +27 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 108 0 R + /XYZ + 62.69291 + 559.4236 + 0 ] + /Rect [ 62.69291 + 705.7736 + 145.5129 + 717.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER22': class LinkAnnotation +28 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 108 0 R + /XYZ + 62.69291 + 559.4236 + 0 ] + /Rect [ 527.0227 + 705.7736 + 532.5827 + 717.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER23': class LinkAnnotation +29 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 108 0 R + /XYZ + 62.69291 + 460.4236 + 0 ] + /Rect [ 82.69291 + 687.7736 + 150.5029 + 699.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER24': class LinkAnnotation +30 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 108 0 R + /XYZ + 62.69291 + 460.4236 + 0 ] + /Rect [ 527.0227 + 687.7736 + 532.5827 + 699.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER25': class LinkAnnotation +31 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 109 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 82.69291 + 669.7736 + 172.1829 + 681.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER26': class LinkAnnotation +32 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 109 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 527.0227 + 669.7736 + 532.5827 + 681.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER27': class LinkAnnotation +33 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 82.69291 + 651.7736 + 191.0929 + 663.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER28': class LinkAnnotation +34 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 527.0227 + 651.7736 + 532.5827 + 663.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER29': class LinkAnnotation +35 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 269.8236 + 0 ] + /Rect [ 62.69291 + 633.7736 + 124.9329 + 645.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER30': class LinkAnnotation +36 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 269.8236 + 0 ] + /Rect [ 527.0227 + 633.7736 + 532.5827 + 645.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER31': class LinkAnnotation +37 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 206.8236 + 0 ] + /Rect [ 82.69291 + 615.7736 + 168.2829 + 627.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER32': class LinkAnnotation +38 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 206.8236 + 0 ] + /Rect [ 527.0227 + 615.7736 + 532.5827 + 627.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER33': class LinkAnnotation +39 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 82.69291 + 597.7736 + 152.7329 + 609.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER34': class LinkAnnotation +40 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 527.0227 + 597.7736 + 532.5827 + 609.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER35': class LinkAnnotation +41 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 609.0236 + 0 ] + /Rect [ 82.69291 + 579.7736 + 153.2829 + 591.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER36': class LinkAnnotation +42 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 609.0236 + 0 ] + /Rect [ 527.0227 + 579.7736 + 532.5827 + 591.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER37': class LinkAnnotation +43 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 465.8236 + 0 ] + /Rect [ 82.69291 + 561.7736 + 141.0529 + 573.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER38': class LinkAnnotation +44 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 465.8236 + 0 ] + /Rect [ 527.0227 + 561.7736 + 532.5827 + 573.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER39': class LinkAnnotation +45 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 345.8236 + 0 ] + /Rect [ 82.69291 + 543.7736 + 159.9529 + 555.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER40': class LinkAnnotation +46 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 345.8236 + 0 ] + /Rect [ 527.0227 + 543.7736 + 532.5827 + 555.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER41': class LinkAnnotation +47 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 178.6236 + 0 ] + /Rect [ 82.69291 + 525.7736 + 160.5029 + 537.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER42': class LinkAnnotation +48 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 178.6236 + 0 ] + /Rect [ 527.0227 + 525.7736 + 532.5827 + 537.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER43': class LinkAnnotation +49 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 62.69291 + 507.7736 + 139.3829 + 519.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER44': class LinkAnnotation +50 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 527.0227 + 507.7736 + 532.5827 + 519.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER45': class LinkAnnotation +51 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 648.0236 + 0 ] + /Rect [ 62.69291 + 489.7736 + 158.8329 + 501.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER46': class LinkAnnotation +52 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 648.0236 + 0 ] + /Rect [ 527.0227 + 489.7736 + 532.5827 + 501.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER47': class LinkAnnotation +53 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 579.0236 + 0 ] + /Rect [ 82.69291 + 471.7736 + 208.8629 + 483.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER48': class LinkAnnotation +54 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 579.0236 + 0 ] + /Rect [ 527.0227 + 471.7736 + 532.5827 + 483.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER49': class LinkAnnotation +55 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 435.0236 + 0 ] + /Rect [ 102.6929 + 453.7736 + 213.8529 + 465.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER50': class LinkAnnotation +56 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 435.0236 + 0 ] + /Rect [ 527.0227 + 453.7736 + 532.5827 + 465.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'F5': class PDFType1Font +57 0 obj +% Font Courier +<< /BaseFont /Courier + /Encoding /WinAnsiEncoding + /Name /F5 + /Subtype /Type1 + /Type /Font >> +endobj +% 'Annot.NUMBER51': class LinkAnnotation +58 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 165.6236 + 0 ] + /Rect [ 122.6929 + 435.7736 + 164.3929 + 447.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER52': class LinkAnnotation +59 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 165.6236 + 0 ] + /Rect [ 164.3929 + 435.7736 + 218.3929 + 447.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER53': class LinkAnnotation +60 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 165.6236 + 0 ] + /Rect [ 218.3929 + 435.7736 + 263.9729 + 447.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER54': class LinkAnnotation +61 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 165.6236 + 0 ] + /Rect [ 527.0227 + 435.7736 + 532.5827 + 447.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER55': class LinkAnnotation +62 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 111.6236 + 0 ] + /Rect [ 122.6929 + 417.7736 + 273.3229 + 429.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER56': class LinkAnnotation +63 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 111.6236 + 0 ] + /Rect [ 527.0227 + 417.7736 + 532.5827 + 429.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER57': class LinkAnnotation +64 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 672.0236 + 0 ] + /Rect [ 122.6929 + 399.7736 + 228.3129 + 411.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER58': class LinkAnnotation +65 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 672.0236 + 0 ] + /Rect [ 527.0227 + 399.7736 + 532.5827 + 411.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER59': class LinkAnnotation +66 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 558.0236 + 0 ] + /Rect [ 82.69291 + 381.7736 + 222.7429 + 393.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER60': class LinkAnnotation +67 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 558.0236 + 0 ] + /Rect [ 527.0227 + 381.7736 + 532.5827 + 393.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER61': class LinkAnnotation +68 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 390.0236 + 0 ] + /Rect [ 102.6929 + 363.7736 + 237.7629 + 375.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER62': class LinkAnnotation +69 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 390.0236 + 0 ] + /Rect [ 527.0227 + 363.7736 + 532.5827 + 375.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER63': class LinkAnnotation +70 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 129.8236 + 0 ] + /Rect [ 122.6929 + 345.7736 + 164.3929 + 357.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER64': class LinkAnnotation +71 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 129.8236 + 0 ] + /Rect [ 164.3929 + 345.7736 + 206.3929 + 357.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER65': class LinkAnnotation +72 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 129.8236 + 0 ] + /Rect [ 206.3929 + 345.7736 + 251.9729 + 357.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER66': class LinkAnnotation +73 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 207 0 R + /XYZ + 62.69291 + 129.8236 + 0 ] + /Rect [ 527.0227 + 345.7736 + 532.5827 + 357.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER67': class LinkAnnotation +74 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 633.0236 + 0 ] + /Rect [ 122.6929 + 327.7736 + 228.3129 + 339.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER68': class LinkAnnotation +75 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 633.0236 + 0 ] + /Rect [ 527.0227 + 327.7736 + 532.5827 + 339.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER69': class LinkAnnotation +76 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 537.0236 + 0 ] + /Rect [ 62.69291 + 309.7736 + 127.7229 + 321.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER70': class LinkAnnotation +77 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 537.0236 + 0 ] + /Rect [ 527.0227 + 309.7736 + 532.5827 + 321.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER71': class LinkAnnotation +78 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 504.0236 + 0 ] + /Rect [ 82.69291 + 291.7736 + 107.7129 + 303.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER72': class LinkAnnotation +79 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 504.0236 + 0 ] + /Rect [ 107.7129 + 291.7736 + 167.7129 + 303.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER73': class LinkAnnotation +80 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 504.0236 + 0 ] + /Rect [ 527.0227 + 291.7736 + 532.5827 + 303.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER74': class LinkAnnotation +81 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 286.8236 + 0 ] + /Rect [ 82.69291 + 273.7736 + 107.7129 + 285.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER75': class LinkAnnotation +82 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 286.8236 + 0 ] + /Rect [ 107.7129 + 273.7736 + 173.7129 + 285.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER76': class LinkAnnotation +83 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 286.8236 + 0 ] + /Rect [ 527.0227 + 273.7736 + 532.5827 + 285.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER77': class LinkAnnotation +84 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 82.69291 + 255.7736 + 107.7129 + 267.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER78': class LinkAnnotation +85 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 107.7129 + 255.7736 + 173.7129 + 267.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER79': class LinkAnnotation +86 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Rect [ 521.4627 + 255.7736 + 532.5827 + 267.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER80': class LinkAnnotation +87 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 463.8236 + 0 ] + /Rect [ 82.69291 + 237.7736 + 107.7129 + 249.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER81': class LinkAnnotation +88 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 463.8236 + 0 ] + /Rect [ 107.7129 + 237.7736 + 179.7129 + 249.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER82': class LinkAnnotation +89 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 463.8236 + 0 ] + /Rect [ 521.4627 + 237.7736 + 532.5827 + 249.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER83': class LinkAnnotation +90 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 162.6236 + 0 ] + /Rect [ 62.69291 + 219.7736 + 108.2529 + 231.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER84': class LinkAnnotation +91 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 162.6236 + 0 ] + /Rect [ 521.4627 + 219.7736 + 532.5827 + 231.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER85': class PDFDictionary +92 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://proj.llucax.com.ar/home/mutest/releases/mutest.tar.gz) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 126.6129 + 165.7736 + 234.4329 + 177.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER86': class PDFDictionary +93 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://proj.llucax.com.ar/home/mutest/releases/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 273.0328 + 147.7736 + 357.2828 + 159.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER87': class PDFDictionary +94 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://git.or.cz/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 425.2127 + 147.7736 + 442.0527 + 159.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER88': class PDFDictionary +95 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://git.llucax.com.ar/w/software/mutest.git) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 519.8027 + 147.7736 + 531.3027 + 159.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER89': class PDFDictionary +96 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://git.llucax.com.ar/w/software/mutest.git) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 62.69291 + 135.7736 + 106.5929 + 147.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER90': class PDFDictionary +97 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://proj.llucax.com.ar/home/mutest/manual.html) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 118.8429 + 117.7736 + 172.7529 + 129.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER91': class PDFDictionary +98 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://proj.llucax.com.ar/home/mutest/manual.pdf) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 212.2229 + 117.7736 + 270.0129 + 129.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page2': class PDFPage +99 0 obj +% Page dictionary +<< /Annots [ 25 0 R + 26 0 R + 27 0 R + 28 0 R + 29 0 R + 30 0 R + 31 0 R + 32 0 R + 33 0 R + 34 0 R + 35 0 R + 36 0 R + 37 0 R + 38 0 R + 39 0 R + 40 0 R + 41 0 R + 42 0 R + 43 0 R + 44 0 R + 45 0 R + 46 0 R + 47 0 R + 48 0 R + 49 0 R + 50 0 R + 51 0 R + 52 0 R + 53 0 R + 54 0 R + 55 0 R + 56 0 R + 58 0 R + 59 0 R + 60 0 R + 61 0 R + 62 0 R + 63 0 R + 64 0 R + 65 0 R + 66 0 R + 67 0 R + 68 0 R + 69 0 R + 70 0 R + 71 0 R + 72 0 R + 73 0 R + 74 0 R + 75 0 R + 76 0 R + 77 0 R + 78 0 R + 79 0 R + 80 0 R + 81 0 R + 82 0 R + 83 0 R + 84 0 R + 85 0 R + 86 0 R + 87 0 R + 88 0 R + 89 0 R + 90 0 R + 91 0 R + 92 0 R + 93 0 R + 94 0 R + 95 0 R + 96 0 R + 97 0 R + 98 0 R ] + /Contents 256 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Annot.NUMBER92': class LinkAnnotation +100 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 651.5236 + 0 ] + /Rect [ 243.4995 + 584.1736 + 311.2995 + 596.1736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER93': class PDFDictionary +101 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://git.llucax.com.ar/w/software/mutest.git?a=tree;f=sample;h=d8ad4dd9c3428fef5963107c82ab6a5e34ec6e00;hb=HEAD) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 215.5429 + 521.1736 + 250.5529 + 533.1736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER94': class LinkAnnotation +102 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 108 0 R + /XYZ + 62.69291 + 463.4236 + 0 ] + /Rect [ 342.9128 + 503.1736 + 389.4027 + 515.1736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER95': class LinkAnnotation +103 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 491.6427 + 503.1736 + 531.6627 + 515.1736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER96': class LinkAnnotation +104 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 109 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 66.02291 + 491.1736 + 130.4929 + 503.1736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER97': class LinkAnnotation +105 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 768.5236 + 0 ] + /Rect [ 148.2929 + 473.1736 + 206.1029 + 485.1736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER98': class LinkAnnotation +106 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 233.3429 + 473.1736 + 316.7229 + 485.1736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER99': class LinkAnnotation +107 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 319.5029 + 473.1736 + 359.5229 + 485.1736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page3': class PDFPage +108 0 obj +% Page dictionary +<< /Annots [ 100 0 R + 101 0 R + 102 0 R + 103 0 R + 104 0 R + 105 0 R + 106 0 R + 107 0 R ] + /Contents 257 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Page4': class PDFPage +109 0 obj +% Page dictionary +<< /Contents 258 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Annot.NUMBER100': class LinkAnnotation +110 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 221.7262 + 231.5736 + 278.3317 + 243.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER101': class LinkAnnotation +111 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 284.3673 + 231.5736 + 324.8628 + 243.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER102': class LinkAnnotation +112 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 330.8983 + 231.5736 + 374.6494 + 243.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER103': class LinkAnnotation +113 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 394.585 + 231.5736 + 425.705 + 243.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER104': class LinkAnnotation +114 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 145.5029 + 219.5736 + 185.5229 + 231.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER105': class LinkAnnotation +115 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 188.3029 + 219.5736 + 242.7629 + 231.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER106': class LinkAnnotation +116 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 181.6236 + 0 ] + /Rect [ 262.2229 + 219.5736 + 314.4629 + 231.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER107': class LinkAnnotation +117 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 651.5236 + 0 ] + /Rect [ 197.8378 + 147.5736 + 273.4328 + 159.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER108': class LinkAnnotation +118 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 651.5236 + 0 ] + /Rect [ 62.69291 + 105.5736 + 133.2729 + 117.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page5': class PDFPage +119 0 obj +% Page dictionary +<< /Annots [ 110 0 R + 111 0 R + 112 0 R + 113 0 R + 114 0 R + 115 0 R + 116 0 R + 117 0 R + 118 0 R ] + /Contents 259 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Annot.NUMBER109': class LinkAnnotation +120 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 106.454 + 717.7736 + 153.6195 + 729.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER110': class LinkAnnotation +121 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 651.5236 + 0 ] + /Rect [ 435.7486 + 705.7736 + 503.5486 + 717.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER111': class LinkAnnotation +122 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 213.5022 + 693.7736 + 261.9187 + 705.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER112': class LinkAnnotation +123 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 480.9027 + 693.7736 + 532.2745 + 705.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER113': class LinkAnnotation +124 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 181.6236 + 0 ] + /Rect [ 82.15291 + 681.7736 + 134.3929 + 693.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER114': class LinkAnnotation +125 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 203.4134 + 663.7736 + 262.3493 + 675.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER115': class LinkAnnotation +126 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 276.8122 + 663.7736 + 324.638 + 675.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER116': class LinkAnnotation +127 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 344.111 + 663.7736 + 398.5839 + 675.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER117': class LinkAnnotation +128 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 181.6236 + 0 ] + /Rect [ 418.0568 + 663.7736 + 470.3097 + 675.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER118': class LinkAnnotation +129 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 197.9404 + 633.7736 + 246.4823 + 645.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER119': class LinkAnnotation +130 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 403.6499 + 633.7736 + 458.4808 + 645.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER120': class LinkAnnotation +131 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 276.5178 + 508.5736 + 307.6378 + 520.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER121': class LinkAnnotation +132 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 651.5236 + 0 ] + /Rect [ 169.9729 + 478.5736 + 237.7729 + 490.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER122': class LinkAnnotation +133 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 192.2605 + 430.5736 + 235.0875 + 442.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER123': class LinkAnnotation +134 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 448.9277 + 418.5736 + 491.9177 + 430.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER124': class LinkAnnotation +135 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 153.3029 + 406.5736 + 196.1029 + 418.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER125': class LinkAnnotation +136 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 768.5236 + 0 ] + /Rect [ 109.3076 + 388.5736 + 167.6023 + 400.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER126': class LinkAnnotation +137 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 216 0 R + /XYZ + 62.69291 + 540.5236 + 0 ] + /Rect [ 181.1029 + 358.5736 + 226.1229 + 370.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER127': class LinkAnnotation +138 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 396.7492 + 310.5736 + 446.4704 + 322.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER128': class LinkAnnotation +139 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 467.2915 + 310.5736 + 508.2721 + 322.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER129': class LinkAnnotation +140 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 205.5656 + 280.5736 + 246.9262 + 292.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER130': class LinkAnnotation +141 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 286.2378 + 203.3736 + 326.5113 + 215.3736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER131': class LinkAnnotation +142 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 651.5236 + 0 ] + /Rect [ 357.292 + 203.3736 + 425.092 + 215.3736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER132': class LinkAnnotation +143 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 265.0029 + 191.3736 + 307.8029 + 203.3736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER133': class LinkAnnotation +144 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 225.6293 + 143.3736 + 280.4485 + 155.3736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER134': class LinkAnnotation +145 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 461.8341 + 143.3736 + 507.2134 + 155.3736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page6': class PDFPage +146 0 obj +% Page dictionary +<< /Annots [ 120 0 R + 121 0 R + 122 0 R + 123 0 R + 124 0 R + 125 0 R + 126 0 R + 127 0 R + 128 0 R + 129 0 R + 130 0 R + 131 0 R + 132 0 R + 133 0 R + 134 0 R + 135 0 R + 136 0 R + 137 0 R + 138 0 R + 139 0 R + 140 0 R + 141 0 R + 142 0 R + 143 0 R + 144 0 R + 145 0 R ] + /Contents 260 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Annot.NUMBER135': class PDFDictionary +147 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://en.wikipedia.org/wiki/Name_mangling) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 440.1822 + 726.7736 + 512.5727 + 738.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER136': class LinkAnnotation +148 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 335.8999 + 714.7736 + 386.117 + 726.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER137': class LinkAnnotation +149 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 406.7856 + 714.7736 + 462.4541 + 726.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER138': class LinkAnnotation +150 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 181.6236 + 0 ] + /Rect [ 483.1227 + 714.7736 + 531.3741 + 726.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER139': class LinkAnnotation +151 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 207.0629 + 702.7736 + 293.2229 + 714.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER140': class LinkAnnotation +152 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 62.69291 + 684.7736 + 99.19956 + 696.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER141': class LinkAnnotation +153 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 442.8794 + 684.7736 + 477.166 + 696.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER142': class LinkAnnotation +154 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 144.6382 + 672.7736 + 206.7667 + 684.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER143': class LinkAnnotation +155 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 221 0 R + /XYZ + 62.69291 + 466.8236 + 0 ] + /Rect [ 227.7851 + 672.7736 + 290.0251 + 684.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER144': class PDFDictionary +156 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://www.digitalmars.com/d/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 82.83356 + 531.7736 + 207.0249 + 543.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER145': class LinkAnnotation +157 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 410.8127 + 501.7736 + 472.2477 + 513.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER146': class LinkAnnotation +158 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 231.6829 + 489.7736 + 279.4829 + 501.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER147': class LinkAnnotation +159 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 201.0699 + 471.7736 + 249.7487 + 483.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER148': class LinkAnnotation +160 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 516.4627 + 459.7736 + 532.0268 + 471.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER149': class LinkAnnotation +161 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 62.69291 + 447.7736 + 83.81291 + 459.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER150': class LinkAnnotation +162 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 89.37291 + 447.7736 + 143.8329 + 459.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER151': class LinkAnnotation +163 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 181.6236 + 0 ] + /Rect [ 163.2929 + 447.7736 + 215.5329 + 459.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER152': class LinkAnnotation +164 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 438.4329 + 447.7736 + 494.5629 + 459.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER153': class LinkAnnotation +165 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 114.6935 + 390.7736 + 172.2204 + 402.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER154': class LinkAnnotation +166 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 516.4627 + 390.7736 + 531.1858 + 402.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER155': class LinkAnnotation +167 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 62.69291 + 378.7736 + 99.92291 + 390.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER156': class LinkAnnotation +168 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 268.4329 + 378.7736 + 316.2329 + 390.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER157': class LinkAnnotation +169 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 295.2208 + 342.7736 + 341.6568 + 354.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER158': class LinkAnnotation +170 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 159.9729 + 211.5736 + 218.8829 + 223.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'F6': class PDFType1Font +171 0 obj +% Font Courier-BoldOblique +<< /BaseFont /Courier-BoldOblique + /Encoding /WinAnsiEncoding + /Name /F6 + /Subtype /Type1 + /Type /Font >> +endobj +% 'Annot.NUMBER159': class LinkAnnotation +172 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 312.2529 + 124.3736 + 357.2729 + 136.3736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page7': class PDFPage +173 0 obj +% Page dictionary +<< /Annots [ 147 0 R + 148 0 R + 149 0 R + 150 0 R + 151 0 R + 152 0 R + 153 0 R + 154 0 R + 155 0 R + 156 0 R + 157 0 R + 158 0 R + 159 0 R + 160 0 R + 161 0 R + 162 0 R + 163 0 R + 164 0 R + 165 0 R + 166 0 R + 167 0 R + 168 0 R + 169 0 R + 170 0 R + 172 0 R ] + /Contents 261 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'F7': class PDFType1Font +174 0 obj +% Font Courier-Bold +<< /BaseFont /Courier-Bold + /Encoding /WinAnsiEncoding + /Name /F7 + /Subtype /Type1 + /Type /Font >> +endobj +% 'Annot.NUMBER160': class LinkAnnotation +175 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 215.6962 + 720.7736 + 249.9917 + 732.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER161': class LinkAnnotation +176 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 516.4627 + 720.7736 + 532.1871 + 732.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER162': class LinkAnnotation +177 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 82.69291 + 708.7736 + 108.8129 + 720.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER163': class LinkAnnotation +178 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 115.0634 + 708.7736 + 164.2445 + 720.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER164': class LinkAnnotation +179 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 184.395 + 708.7736 + 218.9855 + 720.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER165': class LinkAnnotation +180 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 491.8722 + 708.7736 + 531.8922 + 720.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER166': class LinkAnnotation +181 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 324.7428 + 696.7736 + 364.8628 + 708.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER167': class LinkAnnotation +182 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 468.8236 + 0 ] + /Rect [ 82.69291 + 684.7736 + 108.8129 + 696.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER168': class PDFDictionary +183 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://www.gnu.org/software/binutils/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 189.8229 + 585.7736 + 247.0529 + 597.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER169': class PDFDictionary +184 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://www.gnu.org/software/bash/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 105.7029 + 567.7736 + 156.2729 + 579.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER170': class LinkAnnotation +185 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 309.4145 + 510.7736 + 362.5369 + 522.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER171': class LinkAnnotation +186 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 142.7329 + 498.7736 + 190.5329 + 510.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER172': class LinkAnnotation +187 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 124.4966 + 468.7736 + 186.8404 + 480.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER173': class LinkAnnotation +188 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 286.4609 + 468.7736 + 337.6947 + 480.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER174': class LinkAnnotation +189 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 516.4627 + 468.7736 + 530.8658 + 480.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER175': class LinkAnnotation +190 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 62.69291 + 456.7736 + 91.8309 + 468.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER176': class LinkAnnotation +191 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 362.6707 + 456.7736 + 402.9287 + 468.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER177': class LinkAnnotation +192 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 348.8236 + 0 ] + /Rect [ 408.7267 + 456.7736 + 463.4247 + 468.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER178': class LinkAnnotation +193 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 181.6236 + 0 ] + /Rect [ 483.1227 + 456.7736 + 532.3447 + 468.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER179': class LinkAnnotation +194 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 327.7961 + 444.7736 + 372.9505 + 456.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER180': class LinkAnnotation +195 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 419.3594 + 444.7736 + 467.4282 + 456.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER181': class LinkAnnotation +196 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 437.5236 + 0 ] + /Rect [ 334.6208 + 357.7736 + 413.9194 + 369.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER182': class LinkAnnotation +197 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 119 0 R + /XYZ + 62.69291 + 209.8236 + 0 ] + /Rect [ 108.9742 + 345.7736 + 169.7869 + 357.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER183': class PDFDictionary +198 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://www.python.org/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 214.4795 + 345.7736 + 249.3408 + 357.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER184': class PDFDictionary +199 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://docs.python.org/library/ctypes.html) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 276.9721 + 345.7736 + 309.6035 + 357.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER185': class LinkAnnotation +200 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 205.6329 + 333.7736 + 253.4329 + 345.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER186': class LinkAnnotation +201 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 241.6229 + 303.7736 + 289.4229 + 315.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER187': class LinkAnnotation +202 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 437.5236 + 0 ] + /Rect [ 115.7408 + 285.7736 + 193.9934 + 297.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER188': class LinkAnnotation +203 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 437.5236 + 0 ] + /Rect [ 249.9341 + 255.7736 + 329.3128 + 267.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER189': class LinkAnnotation +204 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 436.1365 + 255.7736 + 487.0939 + 267.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER190': class LinkAnnotation +205 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 175.9009 + 100.5736 + 226.7128 + 112.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER191': class LinkAnnotation +206 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 113.6236 + 0 ] + /Rect [ 127.7329 + 88.57362 + 274.1329 + 100.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page8': class PDFPage +207 0 obj +% Page dictionary +<< /Annots [ 175 0 R + 176 0 R + 177 0 R + 178 0 R + 179 0 R + 180 0 R + 181 0 R + 182 0 R + 183 0 R + 184 0 R + 185 0 R + 186 0 R + 187 0 R + 188 0 R + 189 0 R + 190 0 R + 191 0 R + 192 0 R + 193 0 R + 194 0 R + 195 0 R + 196 0 R + 197 0 R + 198 0 R + 199 0 R + 200 0 R + 201 0 R + 202 0 R + 203 0 R + 204 0 R + 205 0 R + 206 0 R ] + /Contents 262 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Annot.NUMBER192': class LinkAnnotation +208 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 131.6029 + 676.7736 + 179.4029 + 688.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER193': class LinkAnnotation +209 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 426.1829 + 676.7736 + 473.9829 + 688.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER194': class LinkAnnotation +210 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 173 0 R + /XYZ + 62.69291 + 437.5236 + 0 ] + /Rect [ 114.3829 + 603.7736 + 192.1829 + 615.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER195': class PDFDictionary +211 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://www.python.org/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 85.69291 + 582.7736 + 119.6029 + 594.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER196': class PDFDictionary +212 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://www.gnu.org/software/binutils/) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 189.8229 + 564.7736 + 247.0529 + 576.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER197': class LinkAnnotation +213 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 768.0236 + 0 ] + /Rect [ 252.2129 + 549.7736 + 300.0129 + 561.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER198': class LinkAnnotation +214 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 375.4829 + 422.7736 + 418.2829 + 434.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER199': class LinkAnnotation +215 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 352.1429 + 205.5736 + 394.9429 + 217.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page9': class PDFPage +216 0 obj +% Page dictionary +<< /Annots [ 208 0 R + 209 0 R + 210 0 R + 211 0 R + 212 0 R + 213 0 R + 214 0 R + 215 0 R ] + /Contents 263 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'Annot.NUMBER200': class LinkAnnotation +217 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 82.69291 + 671.7736 + 125.4929 + 683.7736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER201': class LinkAnnotation +218 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 516.4627 + 382.5736 + 530.8327 + 394.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER202': class LinkAnnotation +219 0 obj +<< /Border [ 0 + 0 + 0 ] + /Contents () + /Dest [ 146 0 R + /XYZ + 62.69291 + 612.0236 + 0 ] + /Rect [ 82.69291 + 370.5736 + 106.5929 + 382.5736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Annot.NUMBER203': class PDFDictionary +220 0 obj +<< /A << /S /URI + /Type /Action + /URI (http://docutils.sourceforge.net/rst.html) >> + /Border [ 0 + 0 + 0 ] + /Rect [ 199.4029 + 124.3736 + 273.8729 + 136.3736 ] + /Subtype /Link + /Type /Annot >> +endobj +% 'Page10': class PDFPage +221 0 obj +% Page dictionary +<< /Annots [ 217 0 R + 218 0 R + 219 0 R + 220 0 R ] + /Contents 264 0 R + /MediaBox [ 0 + 0 + 595.2756 + 841.8898 ] + /Parent 254 0 R + /Resources << /Font 1 0 R + /ProcSet [ /PDF + /Text + /ImageB + /ImageC + /ImageI ] >> + /Rotate 0 + /Trans << >> + /Type /Page >> +endobj +% 'R222': class PDFCatalog +222 0 obj +% Document Root +<< /Outlines 224 0 R + /PageLabels 265 0 R + /PageMode /UseNone + /Pages 254 0 R + /Type /Catalog >> +endobj +% 'R223': class PDFInfo +223 0 obj +<< /Author (Leandro Lucarella) + /CreationDate (D:20130217192608-01'00') + /Creator (\(unspecified\)) + /Keywords () + /Producer (ReportLab PDF Library - www.reportlab.com) + /Subject (\(unspecified\)) + /Title (mutest - A simple micro unit testing framework for C) >> +endobj +% 'R224': class PDFOutlines +224 0 obj +<< /Count 37 + /First 225 0 R + /Last 253 0 R + /Type /Outlines >> +endobj +% 'Outline.0': class OutlineEntryObject +225 0 obj +<< /Dest [ 99 0 R + /XYZ + 62.69291 + 204.0236 + 0 ] + /Next 226 0 R + /Parent 224 0 R + /Title (\376\377\0001\000.\000\240\000\240\000\240\000I\000n\000s\000t\000a\000l\000l\000a\000t\000i\000o\000n) >> +endobj +% 'Outline.1': class OutlineEntryObject +226 0 obj +<< /Count 3 + /Dest [ 108 0 R + /XYZ + 62.69291 + 559.4236 + 0 ] + /First 227 0 R + /Last 229 0 R + /Next 230 0 R + /Parent 224 0 R + /Prev 225 0 R + /Title (\376\377\0002\000.\000\240\000\240\000\240\000Q\000u\000i\000c\000k\000 \000S\000a\000m\000p\000l\000e) >> +endobj +% 'Outline.30.0': class OutlineEntryObject +227 0 obj +<< /Dest [ 108 0 R + /XYZ + 62.69291 + 460.4236 + 0 ] + /Next 228 0 R + /Parent 226 0 R + /Title (\376\377\0002\000.\0001\000.\000\240\000\240\000\240\000f\000a\000c\000t\000o\000r\000i\000a\000l\000.\000c) >> +endobj +% 'Outline.30.1': class OutlineEntryObject +228 0 obj +<< /Dest [ 109 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Next 229 0 R + /Parent 226 0 R + /Prev 227 0 R + /Title (\376\377\0002\000.\0002\000.\000\240\000\240\000\240\000f\000a\000c\000t\000o\000r\000i\000a\000l\000_\000t\000e\000s\000t\000.\000c) >> +endobj +% 'Outline.30.2': class OutlineEntryObject +229 0 obj +<< /Dest [ 119 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Parent 226 0 R + /Prev 228 0 R + /Title (\376\377\0002\000.\0003\000.\000\240\000\240\000\240\000e\000x\000c\000e\000p\000t\000i\000o\000n\000_\000t\000e\000s\000t\000.\000c\000p\000p) >> +endobj +% 'Outline.2': class OutlineEntryObject +230 0 obj +<< /Count 6 + /Dest [ 119 0 R + /XYZ + 62.69291 + 269.8236 + 0 ] + /First 231 0 R + /Last 236 0 R + /Next 237 0 R + /Parent 224 0 R + /Prev 226 0 R + /Title (\376\377\0003\000.\000\240\000\240\000\240\000C\000o\000n\000c\000e\000p\000t\000s) >> +endobj +% 'Outline.31.0': class OutlineEntryObject +231 0 obj +<< /Dest [ 119 0 R + /XYZ + 62.69291 + 206.8236 + 0 ] + /Next 232 0 R + /Parent 230 0 R + /Title (\376\377\0003\000.\0001\000.\000\240\000\240\000\240\000T\000e\000s\000t\000 \000P\000r\000o\000g\000r\000a\000m) >> +endobj +% 'Outline.31.1': class OutlineEntryObject +232 0 obj +<< /Dest [ 146 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Next 233 0 R + /Parent 230 0 R + /Prev 231 0 R + /Title (\376\377\0003\000.\0002\000.\000\240\000\240\000\240\000T\000e\000s\000t\000 \000S\000u\000i\000t\000e) >> +endobj +% 'Outline.31.2': class OutlineEntryObject +233 0 obj +<< /Dest [ 146 0 R + /XYZ + 62.69291 + 609.0236 + 0 ] + /Next 234 0 R + /Parent 230 0 R + /Prev 232 0 R + /Title (\376\377\0003\000.\0003\000.\000\240\000\240\000\240\000T\000e\000s\000t\000 \000C\000a\000s\000e) >> +endobj +% 'Outline.31.3': class OutlineEntryObject +234 0 obj +<< /Dest [ 146 0 R + /XYZ + 62.69291 + 465.8236 + 0 ] + /Next 235 0 R + /Parent 230 0 R + /Prev 233 0 R + /Title (\376\377\0003\000.\0004\000.\000\240\000\240\000\240\000C\000h\000e\000c\000k\000s) >> +endobj +% 'Outline.31.4': class OutlineEntryObject +235 0 obj +<< /Dest [ 146 0 R + /XYZ + 62.69291 + 345.8236 + 0 ] + /Next 236 0 R + /Parent 230 0 R + /Prev 234 0 R + /Title (\376\377\0003\000.\0005\000.\000\240\000\240\000\240\000I\000n\000i\000t\000i\000a\000l\000i\000z\000a\000t\000i\000o\000n) >> +endobj +% 'Outline.31.5': class OutlineEntryObject +236 0 obj +<< /Dest [ 146 0 R + /XYZ + 62.69291 + 178.6236 + 0 ] + /Parent 230 0 R + /Prev 235 0 R + /Title (\376\377\0003\000.\0006\000.\000\240\000\240\000\240\000T\000e\000r\000m\000i\000n\000a\000t\000i\000o\000n) >> +endobj +% 'Outline.3': class OutlineEntryObject +237 0 obj +<< /Dest [ 173 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Next 238 0 R + /Parent 224 0 R + /Prev 230 0 R + /Title (\376\377\0004\000.\000\240\000\240\000\240\000C\000+\000+\000 \000S\000u\000p\000p\000o\000r\000t) >> +endobj +% 'Outline.4': class OutlineEntryObject +238 0 obj +<< /Count 9 + /Dest [ 173 0 R + /XYZ + 62.69291 + 648.0236 + 0 ] + /First 239 0 R + /Last 244 0 R + /Next 248 0 R + /Parent 224 0 R + /Prev 237 0 R + /Title (\376\377\0005\000.\000\240\000\240\000\240\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000s) >> +endobj +% 'Outline.32.0': class OutlineEntryObject +239 0 obj +<< /Count 4 + /Dest [ 173 0 R + /XYZ + 62.69291 + 579.0236 + 0 ] + /First 240 0 R + /Last 240 0 R + /Next 244 0 R + /Parent 238 0 R + /Title (\376\377\0005\000.\0001\000.\000\240\000\240\000\240\000S\000t\000a\000t\000i\000c\000 \000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000s) >> +endobj +% 'Outline.33.0': class OutlineEntryObject +240 0 obj +<< /Count 3 + /Dest [ 173 0 R + /XYZ + 62.69291 + 435.0236 + 0 ] + /First 241 0 R + /Last 243 0 R + /Parent 239 0 R + /Title (\376\377\0005\000.\0001\000.\0001\000.\000\240\000\240\000\240\000C\000 \000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) >> +endobj +% 'Outline.34.0': class OutlineEntryObject +241 0 obj +<< /Dest [ 173 0 R + /XYZ + 62.69291 + 165.6236 + 0 ] + /Next 242 0 R + /Parent 240 0 R + /Title (\376\377\0005\000.\0001\000.\0001\000.\0001\000.\000\240\000\240\000\240\000m\000k\000m\000u\000t\000e\000s\000t\000 \000I\000n\000v\000o\000c\000a\000t\000i\000o\000n) >> +endobj +% 'Outline.34.1': class OutlineEntryObject +242 0 obj +<< /Dest [ 173 0 R + /XYZ + 62.69291 + 111.6236 + 0 ] + /Next 243 0 R + /Parent 240 0 R + /Prev 241 0 R + /Title (\376\377\0005\000.\0001\000.\0001\000.\0002\000.\000\240\000\240\000\240\000T\000e\000s\000t\000 \000P\000r\000o\000g\000r\000a\000m\000 \000I\000n\000v\000o\000c\000a\000t\000i\000o\000n) >> +endobj +% 'Outline.34.2': class OutlineEntryObject +243 0 obj +<< /Dest [ 207 0 R + /XYZ + 62.69291 + 672.0236 + 0 ] + /Parent 240 0 R + /Prev 242 0 R + /Title (\376\377\0005\000.\0001\000.\0001\000.\0003\000.\000\240\000\240\000\240\000D\000e\000p\000e\000n\000d\000e\000n\000c\000i\000e\000s) >> +endobj +% 'Outline.32.1': class OutlineEntryObject +244 0 obj +<< /Count 3 + /Dest [ 207 0 R + /XYZ + 62.69291 + 558.0236 + 0 ] + /First 245 0 R + /Last 245 0 R + /Parent 238 0 R + /Prev 239 0 R + /Title (\376\377\0005\000.\0002\000.\000\240\000\240\000\240\000D\000y\000n\000a\000m\000i\000c\000 \000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n\000s) >> +endobj +% 'Outline.35.0': class OutlineEntryObject +245 0 obj +<< /Count 2 + /Dest [ 207 0 R + /XYZ + 62.69291 + 390.0236 + 0 ] + /First 246 0 R + /Last 247 0 R + /Parent 244 0 R + /Title (\376\377\0005\000.\0002\000.\0001\000.\000\240\000\240\000\240\000P\000y\000t\000h\000o\000n\000 \000i\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n) >> +endobj +% 'Outline.36.0': class OutlineEntryObject +246 0 obj +<< /Dest [ 207 0 R + /XYZ + 62.69291 + 129.8236 + 0 ] + /Next 247 0 R + /Parent 245 0 R + /Title (\376\377\0005\000.\0002\000.\0001\000.\0001\000.\000\240\000\240\000\240\000m\000u\000t\000e\000s\000t\000 \000I\000n\000v\000o\000c\000a\000t\000i\000o\000n) >> +endobj +% 'Outline.36.1': class OutlineEntryObject +247 0 obj +<< /Dest [ 216 0 R + /XYZ + 62.69291 + 633.0236 + 0 ] + /Parent 245 0 R + /Prev 246 0 R + /Title (\376\377\0005\000.\0002\000.\0001\000.\0002\000.\000\240\000\240\000\240\000D\000e\000p\000e\000n\000d\000e\000n\000c\000i\000e\000s) >> +endobj +% 'Outline.5': class OutlineEntryObject +248 0 obj +<< /Count 4 + /Dest [ 216 0 R + /XYZ + 62.69291 + 537.0236 + 0 ] + /First 249 0 R + /Last 252 0 R + /Next 253 0 R + /Parent 224 0 R + /Prev 238 0 R + /Title (\376\377\0006\000.\000\240\000\240\000\240\000R\000e\000f\000e\000r\000e\000n\000c\000e) >> +endobj +% 'Outline.37.0': class OutlineEntryObject +249 0 obj +<< /Dest [ 216 0 R + /XYZ + 62.69291 + 504.0236 + 0 ] + /Next 250 0 R + /Parent 248 0 R + /Title (\376\377\0006\000.\0001\000.\000\240\000\240\000\240\000m\000u\000_\000c\000h\000e\000c\000k\000\(\000\)) >> +endobj +% 'Outline.37.1': class OutlineEntryObject +250 0 obj +<< /Dest [ 216 0 R + /XYZ + 62.69291 + 286.8236 + 0 ] + /Next 251 0 R + /Parent 248 0 R + /Prev 249 0 R + /Title (\376\377\0006\000.\0002\000.\000\240\000\240\000\240\000m\000u\000_\000e\000n\000s\000u\000r\000e\000\(\000\)) >> +endobj +% 'Outline.37.2': class OutlineEntryObject +251 0 obj +<< /Dest [ 221 0 R + /XYZ + 62.69291 + 765.0236 + 0 ] + /Next 252 0 R + /Parent 248 0 R + /Prev 250 0 R + /Title (\376\377\0006\000.\0003\000.\000\240\000\240\000\240\000m\000u\000_\000e\000c\000h\000e\000c\000k\000\(\000\)) >> +endobj +% 'Outline.37.3': class OutlineEntryObject +252 0 obj +<< /Dest [ 221 0 R + /XYZ + 62.69291 + 463.8236 + 0 ] + /Parent 248 0 R + /Prev 251 0 R + /Title (\376\377\0006\000.\0004\000.\000\240\000\240\000\240\000m\000u\000_\000e\000e\000n\000s\000u\000r\000e\000\(\000\)) >> +endobj +% 'Outline.6': class OutlineEntryObject +253 0 obj +<< /Dest [ 221 0 R + /XYZ + 62.69291 + 162.6236 + 0 ] + /Parent 224 0 R + /Prev 248 0 R + /Title (\376\377\0007\000.\000\240\000\240\000\240\000A\000b\000o\000u\000t) >> +endobj +% 'R254': class PDFPages +254 0 obj +% page tree +<< /Count 10 + /Kids [ 24 0 R + 99 0 R + 108 0 R + 109 0 R + 119 0 R + 146 0 R + 173 0 R + 207 0 R + 216 0 R + 221 0 R ] + /Type /Pages >> +endobj +% 'R255': class PDFStream +255 0 obj +% page stream +<< /Length 4021 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 717.0236 cm +q +BT 1 0 0 1 0 28 Tm 11.56488 0 Td 24 TL /F2 20 Tf 0 0 0 rg (mutest ) Tj /F3 20 Tf (- A simple micro unit testing framework) Tj T* 200.05 0 Td (for C) Tj T* -211.6149 0 Td ET +Q +Q +q +1 0 0 1 62.69291 692.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 36.93937 0 Td (Author:) Tj T* -36.93937 0 Td ET +Q +Q +q +1 0 0 1 91.03937 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Leandro Lucarella) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 677.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 32.48937 0 Td (Contact:) Tj T* -32.48937 0 Td ET +Q +Q +q +1 0 0 1 91.03937 3 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (llucax@gmail.com) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 662.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 33.02937 0 Td (Version:) Tj T* -33.02937 0 Td ET +Q +Q +q +1 0 0 1 91.03937 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (1.0) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 647.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 48.03937 0 Td (Date:) Tj T* -48.03937 0 Td ET +Q +Q +q +1 0 0 1 91.03937 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (2013-02-17) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 632.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 22.48937 0 Td (Copyright:) Tj T* -22.48937 0 Td ET +Q +Q +q +1 0 0 1 91.03937 3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Leandro Lucarella \(2008\), released under the ) Tj 0 0 .501961 rg (BOLA ) Tj 0 0 0 rg (license) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 605.0236 cm +q +BT 1 0 0 1 0 2.5 Tm 15 TL /F2 12.5 Tf 0 0 0 rg (Abstract) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 551.0236 cm +q +BT 1 0 0 1 0 38 Tm 12 TL /F4 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (is a micro ) Tj 0 0 .501961 rg (unit testing ) Tj 0 0 0 rg (framework for C \(with some ) Tj 0 0 .501961 rg (C++ support) Tj 0 0 0 rg (\). It's mostly an idea \(it even comes) Tj T* (with 2 ) Tj 0 0 .501961 rg (implementations ) Tj 0 0 0 rg (of the idea!\) with the goal of being easy to use \(just write your ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (grouped) Tj T* (in ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (and you're set\) and so small and simple that you don't mind to copy the files to your project) Tj T* (and just use it \(i.e., no dependencies\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 503.0236 cm +q +BT 1 0 0 1 0 38 Tm 12 TL /F1 10 Tf 0 0 0 rg (The idea is simple: a source file is a ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg (, a function is a ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (\(special functions can be used for) Tj T* 0 0 .501961 rg (test suite) Tj 0 0 0 rg ( ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination) Tj 0 0 0 rg (\), which can can have several ) Tj 0 0 .501961 rg (checks) Tj 0 0 0 rg (. ) Tj 0 0 .501961 rg (Checks ) Tj 0 0 0 rg (comes in 2 flavors,) Tj T* (one that only prints an error, and one that terminates the current ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (too. A \(normally\) automated) Tj T* 0 0 .501961 rg (test program ) Tj 0 0 0 rg (run all the ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (and print some stats. It fails \(returns non-zero\) if any ) Tj 0 0 .501961 rg (test suite ) Tj 0 0 0 rg (fails.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 467.0236 cm +q +BT 1 0 0 1 0 26 Tm 12 TL /F1 10 Tf 0 0 0 rg (<) Tj (div style="width: 220px; height: 270px; float: right; margin-left: 1em; margin-top: 1em") Tj (> <) Tj (iframe) Tj T* (width="220" height="270" style="border: none; outline: none") Tj T* (src="http://tools.flattr.net/widgets/thing.html?thing=1141711") Tj (>) Tj (<) Tj (/iframe) Tj (> <) Tj (/div) Tj (>) Tj T* ET +Q +Q + +endstream +endobj +% 'R256': class PDFStream +256 0 obj +% page stream +<< /Length 8831 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 744.0236 cm +q +BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (Contents) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 216.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 0 507 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (1. Installation) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 507 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (2) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 489 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (2. Quick Sample) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 489 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 471 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.1. factorial.c) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 471 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (3) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 453 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.2. factorial_test.c) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 453 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (4) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 435 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (2.3. exception_test.cpp) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 435 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 417 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (3. Concepts) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 417 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 399 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.1. Test Program) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 399 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (5) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 381 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.2. Test Suite) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 381 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 363 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.3. Test Case) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 363 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 345 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.4. Checks) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 345 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 327 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.5. Initialization) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 327 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 309 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (3.6. Termination) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 309 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (6) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 291 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (4. C++ Support) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 291 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 273 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (5. Implementations) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 273 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 255 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1. Static Implementations) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 255 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 237 cm +q +BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1.1. C implementation) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 237 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 219 cm +q +BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1.1.1. ) Tj /F5 10 Tf 0 0 0 rg (mkmutest ) Tj /F1 10 Tf 0 0 .501961 rg (Invocation) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 219 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 201 cm +q +BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1.1.2. Test Program Invocation) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 201 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (7) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 183 cm +q +BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.1.1.3. Dependencies) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 183 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 165 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.2. Dynamic Implementations) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 165 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 147 cm +q +BT 1 0 0 1 40 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.2.1. Python implementation) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 147 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 129 cm +q +BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.2.1.1. ) Tj /F5 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf 0 0 .501961 rg (Invocation) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 129 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (8) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 111 cm +q +BT 1 0 0 1 60 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (5.2.1.2. Dependencies) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 111 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 93 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (6. Reference) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 93 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 75 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (6.1. ) Tj /F5 10 Tf 0 0 0 rg (mu_check\(\)) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 75 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 57 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (6.2. ) Tj /F5 10 Tf 0 0 0 rg (mu_ensure\(\)) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 57 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 66.44 0 Td (9) Tj T* -66.44 0 Td ET +Q +Q +q +1 0 0 1 0 39 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (6.3. ) Tj /F5 10 Tf 0 0 0 rg (mu_echeck\(\)) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 39 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET +Q +Q +q +1 0 0 1 0 21 cm +q +BT 1 0 0 1 20 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (6.4. ) Tj /F5 10 Tf 0 0 0 rg (mu_eensure\(\)) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 21 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET +Q +Q +q +1 0 0 1 0 3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F3 10 Tf 0 0 .501961 rg (7. About) Tj T* ET +Q +Q +q +1 0 0 1 397.8898 3 cm +q +0 0 .501961 rg +0 0 .501961 RG +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL 60.88 0 Td (10) Tj T* -60.88 0 Td ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 183.0236 cm +q +BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (1. Installation) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 165.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Download the ) Tj 0 0 .501961 rg (latest distribution tarball ) Tj 0 0 0 rg (and uncompress it.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 135.0236 cm +q +BT 1 0 0 1 0 14 Tm 1.279987 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can also download any release from the ) Tj 0 0 .501961 rg (releases directory ) Tj 0 0 0 rg (or get it using ) Tj 0 0 .501961 rg (Git ) Tj 0 0 0 rg (directly from the ) Tj 0 0 .501961 rg (Git) Tj T* 0 Tw (repository) Tj 0 0 0 rg (.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 117.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can get ) Tj 0 0 .501961 rg (this manual ) Tj 0 0 0 rg (too, or a ) Tj 0 0 .501961 rg (PDF version ) Tj 0 0 0 rg (of it.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 99.02362 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (To actually install ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (run:) Tj T* ET +Q +Q + +endstream +endobj +% 'R257': class PDFStream +257 0 obj +% page stream +<< /Length 4497 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 739.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 24 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL ($ make install) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 707.8236 cm +q +BT 1 0 0 1 0 14 Tm 1.377674 Tw 12 TL /F1 10 Tf 0 0 0 rg (Default installation path is ) Tj /F5 10 Tf (/usr/local ) Tj /F1 10 Tf (\(because of that, you'll probably need superuser privileges to) Tj T* 0 Tw (install to the default location\). You can override that by passing the ) Tj /F5 10 Tf (prefix ) Tj /F1 10 Tf (make variable, for example:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 674.6236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 24 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL ($ make prefix=/opt/mutest install) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 654.6236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (If you want to install just the docs, you can do:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 621.4236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 24 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL ($ make install-doc) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 601.4236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Or even ) Tj /F5 10 Tf (install-readme) Tj /F1 10 Tf (, ) Tj /F5 10 Tf (install-html ) Tj /F1 10 Tf (or ) Tj /F5 10 Tf (install-pdf ) Tj /F1 10 Tf (if you are too picky.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 571.4236 cm +q +BT 1 0 0 1 0 14 Tm 1.063318 Tw 12 TL /F1 10 Tf 0 0 0 rg (If you want to install just one particular ) Tj 0 0 .501961 rg (implementation) Tj 0 0 0 rg (, to can use the ) Tj /F5 10 Tf (install-c ) Tj /F1 10 Tf (and ) Tj /F5 10 Tf (install-py) Tj T* 0 Tw /F1 10 Tf (targets.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 538.4236 cm +q +BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (2. Quick Sample) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 520.4236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can find some samples in the ) Tj 0 0 .501961 rg (sample ) Tj 0 0 0 rg (directory.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 490.4236 cm +q +BT 1 0 0 1 0 14 Tm .919985 Tw 12 TL /F1 10 Tf 0 0 0 rg (This is an example taken from there. A simple ) Tj /F4 10 Tf (module ) Tj /F1 10 Tf (called ) Tj 0 0 .501961 rg (factorial.c ) Tj 0 0 0 rg (with its corresponding ) Tj 0 0 .501961 rg (test suite) Tj T* 0 Tw 0 0 0 rg (\() Tj 0 0 .501961 rg (factorial_test.c) Tj 0 0 0 rg (\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 472.4236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can see some ) Tj 0 0 .501961 rg (C++ support ) Tj 0 0 0 rg (in the ) Tj 0 0 .501961 rg (exception_test.cpp) Tj 0 0 0 rg ( ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg (.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 442.4236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (2.1. factorial.c) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 217.2236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 216 re B* +Q +q +BT 1 0 0 1 0 194 Tm 12 TL /F1 10 Tf 0 0 0 rg (/*) Tj T* ( * This file is part of mutest, a simple micro unit testing framework for C.) Tj T* ( *) Tj T* ( * mutest was written by Leandro Lucarella ) Tj (<) Tj (llucax@gmail.com) Tj (>) Tj ( and is released) Tj T* ( * under the BOLA license, please see the LICENSE file or visit:) Tj T* ( * http://blitiri.com.ar/p/bola/) Tj T* ( *) Tj T* ( * This is an example module that calculates a factorial.) Tj T* ( *) Tj T* ( * Please, read the README file for more details.) Tj T* ( */) Tj /F5 10 Tf T* T* /F1 10 Tf (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj (\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (if) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (<) Tj (=) Tj /F5 10 Tf ( ) Tj (1) Tj /F1 10 Tf (\)) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (return) Tj /F5 10 Tf ( ) Tj (1) Tj /F1 10 Tf (;) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (return) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (*) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj (x) Tj (-) Tj /F5 10 Tf (1) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj T* ET +Q +Q +Q +Q +Q + +endstream +endobj +% 'R258': class PDFStream +258 0 obj +% page stream +<< /Length 4506 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 747.0236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (2.2. factorial_test.c) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 161.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 576 re B* +Q +q +BT 1 0 0 1 0 554 Tm 12 TL /F1 10 Tf 0 0 0 rg (/*) Tj T* ( * This file is part of mutest, a simple micro unit testing framework for C.) Tj T* ( *) Tj T* ( * mutest was written by Leandro Lucarella ) Tj (<) Tj (llucax@gmail.com) Tj (>) Tj ( and is released) Tj T* ( * under the BOLA license, please see the LICENSE file or visit:) Tj T* ( * http://blitiri.com.ar/p/bola/) Tj T* ( *) Tj T* ( * This is the factorial module test suite. Each \(public\) function starting) Tj T* ( * with mu_test will be picked up by mkmutest as a test case.) Tj T* ( *) Tj T* ( * Please, read the README file for more details.) Tj T* ( */) Tj /F5 10 Tf T* T* /F1 10 Tf (#include "factorial.h") Tj T* /F5 10 Tf T* /F1 10 Tf (#include "../mutest.h") Tj T* /F5 10 Tf T* /F1 10 Tf (void) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (mu_test_factorial_zero) Tj (\(\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (0) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (1) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj /F5 10 Tf T* T* /F1 10 Tf (void) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (mu_test_factorial_one) Tj (\(\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (1) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (/* this test is wrong on purpose, to see how it fails */) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (2) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj /F5 10 Tf T* T* /F1 10 Tf (void) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (mu_test_factorial_positive) Tj (\(\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (unsigned) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (2) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (/* this test is wrong on purpose, to see how it fails */) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (3) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* T* ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (3) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (/* we don't want to continue if this fails, because the next result) Tj T* ( * depends on this one. This one will succeed. */) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_ensure) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (6) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* T* ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj (x) Tj (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (720) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* T* ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj /F5 10 Tf (4) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_ensure) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (6) Tj /F1 10 Tf (\);) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (/* same as before, but this one will fail. */) Tj /F5 10 Tf T* T* ( ) Tj /F1 10 Tf (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (=) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (factorial) Tj (\() Tj (x) Tj (-) Tj /F5 10 Tf (15) Tj /F1 10 Tf (\);) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (/* and this will never be executed */) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (x) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (362881) Tj /F1 10 Tf (\);) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (/* but if excecuted, will fail */) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj T* ET +Q +Q +Q +Q +Q + +endstream +endobj +% 'R259': class PDFStream +259 0 obj +% page stream +<< /Length 5051 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 747.0236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (2.3. exception_test.cpp) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 281.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 456 re B* +Q +q +BT 1 0 0 1 0 434 Tm 12 TL /F1 10 Tf 0 0 0 rg (/*) Tj T* ( * This file is part of mutest, a simple micro unit testing framework for C.) Tj T* ( *) Tj T* ( * mutest was written by Leandro Lucarella ) Tj (<) Tj (llucax@gmail.com) Tj (>) Tj ( and is released) Tj T* ( * under the BOLA license, please see the LICENSE file or visit:) Tj T* ( * http://blitiri.com.ar/p/bola/) Tj T* ( *) Tj T* ( * This is a C++ module test suite. It shows how to use checks involving) Tj T* ( * exceptions.) Tj T* ( *) Tj T* ( * Please, read the README file for more details.) Tj T* ( */) Tj /F5 10 Tf T* T* /F1 10 Tf (#include ) Tj (<) Tj (stdexcept) Tj (>) Tj ( ) Tj (// std::out_of_range) Tj T* (#include ) Tj (<) Tj (vector) Tj (>) Tj ( ) Tj (// std::vector) Tj T* /F5 10 Tf T* /F1 10 Tf (#include "../mutest.h") Tj T* /F5 10 Tf T* /F1 10 Tf (extern) Tj /F5 10 Tf ( ) Tj ("C") Tj ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* T* /F1 10 Tf (void) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (mu_test_exceptions) Tj (\(\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf ({) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (std) Tj (::) Tj (vector) Tj (<) Tj (int) Tj (>) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (v) Tj (\() Tj /F5 10 Tf (1) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// ok) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (0) Tj /F1 10 Tf (\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (0) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// throws! This fails) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (1) Tj /F1 10 Tf (\)) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (==) Tj /F5 10 Tf ( ) Tj (0) Tj /F1 10 Tf (\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// ok, we expect the exception to be thrown, and it does) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_echeck) Tj (\() Tj (std) Tj (::) Tj (out_of_range) Tj (,) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (1) Tj /F1 10 Tf (\)\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// fails! We expect this to throw, but it doesn't) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_echeck) Tj (\() Tj (std) Tj (::) Tj (out_of_range) Tj (,) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (0) Tj /F1 10 Tf (\)\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// fails again, but this time the show is over \(note the "ensure"\)) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_eensure) Tj (\() Tj (std) Tj (::) Tj (out_of_range) Tj (,) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (v) Tj (.) Tj (at) Tj (\() Tj /F5 10 Tf (0) Tj /F1 10 Tf (\)\);) Tj /F5 10 Tf T* ( ) Tj /F1 10 Tf (// this will never be executed \(it should fail if it is\)) Tj T* /F5 10 Tf ( ) Tj /F1 10 Tf (mu_check) Tj (\() Tj (v) Tj (.) Tj (empty) Tj (\(\)\);) Tj /F5 10 Tf T* /F1 10 Tf (}) Tj /F5 10 Tf T* T* /F1 10 Tf (}) Tj /F5 10 Tf ( ) Tj /F1 10 Tf (// extern "C") Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 248.8236 cm +q +BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (3. Concepts) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 218.8236 cm +q +BT 1 0 0 1 0 14 Tm .475542 Tw 12 TL /F4 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (is about 4 simple concepts: ) Tj 0 0 .501961 rg (test program) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (checks) Tj 0 0 0 rg (. Well, to be honest you) Tj T* 0 Tw (probably will need ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg ( ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination ) Tj 0 0 0 rg (too =\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 188.8236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.1. Test Program) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 134.8236 cm +q +BT 1 0 0 1 0 38 Tm .090941 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F3 10 Tf (test program ) Tj /F1 10 Tf (is the higher level unit of ) Tj /F4 10 Tf (mutest) Tj /F1 10 Tf (. The test program is the one in charge of running all your) Tj T* 0 Tw .28832 Tw (tests. Probably one of the more important features of ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (is that you are not supposed to bother about) Tj T* 0 Tw .014985 Tw (the test program. So, different ) Tj 0 0 .501961 rg (implementations ) Tj 0 0 0 rg (have different ways to tackle this. Some need more or less) Tj T* 0 Tw (interactions from your part, and each have their pros and cons.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 104.8236 cm +q +BT 1 0 0 1 0 14 Tm .064751 Tw 12 TL /F1 10 Tf 0 0 0 rg (But this is all you need to know for now, for more details see how the test program is implemented by your) Tj T* 0 Tw 0 0 .501961 rg (implementation ) Tj 0 0 0 rg (of choice.) Tj T* ET +Q +Q + +endstream +endobj +% 'R260': class PDFStream +260 0 obj +% page stream +<< /Length 7052 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 747.0236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.2. Test Suite) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 681.0236 cm +q +BT 1 0 0 1 0 50 Tm .300444 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F3 10 Tf (test suite ) Tj /F1 10 Tf (is the higher level unit of ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (that you should care about =\). Is not much more than a way) Tj T* 0 Tw 2.145542 Tw (to group ) Tj 0 0 .501961 rg (test cases) Tj 0 0 0 rg (. Code-wise, a test suite is a C \(or C++\) module \(or compilation unit\). Not clear) Tj T* 0 Tw 1.254104 Tw (enough? A unit test is an object file \(could be a shared object depending on the ) Tj 0 0 .501961 rg (implementation) Tj 0 0 0 rg (\). This) Tj T* 0 Tw .308221 Tw (module should have one or more ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (and it could have any number \(including zero\) of ) Tj 0 0 .501961 rg (initialization) Tj T* 0 Tw 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination ) Tj 0 0 0 rg (functions.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 651.0236 cm +q +BT 1 0 0 1 0 14 Tm .012927 Tw 12 TL /F1 10 Tf 0 0 0 rg (A test suite, is inspected by the ) Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (for ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination ) Tj 0 0 0 rg (functions, and) Tj T* 0 Tw (run them.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 621.0236 cm +q +BT 1 0 0 1 0 14 Tm .370941 Tw 12 TL /F1 10 Tf 0 0 0 rg (A test suite fail if one or more ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (fail, and it's skipped if one or more ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (functions fail \(or,) Tj T* 0 Tw (depending on the implementation, if the test suite can't be loaded at all\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 591.0236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.3. Test Case) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 561.0236 cm +q +BT 1 0 0 1 0 14 Tm 1.064724 Tw 12 TL /F1 10 Tf 0 0 0 rg (A ) Tj /F3 10 Tf (test case ) Tj /F1 10 Tf (is just a plain function with a special signature and name. A test case function name must) Tj T* 0 Tw (start with ) Tj /F5 10 Tf (mu_test) Tj /F1 10 Tf (, and take no arguments and return nothing. For example:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 527.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 24 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (void mu_test_something\(void\);) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 495.8236 cm +q +BT 1 0 0 1 0 14 Tm .151488 Tw 12 TL /F1 10 Tf 0 0 0 rg (A test case \(probably\) only make sense if it has ) Tj 0 0 .501961 rg (checks) Tj 0 0 0 rg (. A test case succeed only if all its checks succeed) Tj T* 0 Tw (too.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 477.8236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Test are executed in an ) Tj 0 0 .501961 rg (implementation) Tj 0 0 0 rg (-dependant order, but usually the default order is alphabetical.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 447.8236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.4. Checks) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 405.8236 cm +q +BT 1 0 0 1 0 26 Tm .013516 Tw 12 TL /F1 10 Tf 0 0 0 rg (Checks are assertions that a ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (must pass \(a boolean expression that must evaluate to ) Tj /F4 10 Tf (true) Tj /F1 10 Tf (\). There) Tj T* 0 Tw .094988 Tw (are 2 big flavors of checks: ) Tj /F3 10 Tf (check ) Tj /F1 10 Tf (and ) Tj /F3 10 Tf (ensure) Tj /F1 10 Tf (. ) Tj /F3 10 Tf (check ) Tj /F1 10 Tf (just print an error \(and ) Tj /F4 10 Tf (mark ) Tj /F1 10 Tf (the ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (as failed\)) Tj T* 0 Tw (and ) Tj /F3 10 Tf (ensure ) Tj /F1 10 Tf (halt the ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (execution, jumping to the next one.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 375.8236 cm +q +BT 1 0 0 1 0 14 Tm .242339 Tw 12 TL /F1 10 Tf 0 0 0 rg (For better ) Tj 0 0 .501961 rg (C++ support ) Tj 0 0 0 rg (there are check macros that assert that a specified exception is thrown \(instead of) Tj T* 0 Tw (check for a boolean expression to evaluate to ) Tj /F4 10 Tf (true) Tj /F1 10 Tf (\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 357.8236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You can take a look at the ) Tj 0 0 .501961 rg (reference ) Tj 0 0 0 rg (to see the different flavors of check macros in more detail.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 327.8236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.5. Initialization) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 297.8236 cm +q +BT 1 0 0 1 0 14 Tm .960574 Tw 12 TL /F1 10 Tf 0 0 0 rg (Sometimes you need to setup some environment shared between all the ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (in a ) Tj 0 0 .501961 rg (test suite) Tj 0 0 0 rg (. You) Tj T* 0 Tw (can use ) Tj /F3 10 Tf (initialization functions ) Tj /F1 10 Tf (for this.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 255.8236 cm +q +BT 1 0 0 1 0 26 Tm 1.340542 Tw 12 TL /F1 10 Tf 0 0 0 rg (An initialization function, like a ) Tj 0 0 .501961 rg (test case) Tj 0 0 0 rg (, is a plain C function with a special name and signature. The) Tj T* 0 Tw 2.140574 Tw (name must start with ) Tj /F5 10 Tf (mu_init ) Tj /F1 10 Tf (and it must take no arguments, and return an ) Tj /F4 10 Tf (error code ) Tj /F1 10 Tf (\() Tj /F5 10 Tf (0 ) Tj /F1 10 Tf (being) Tj T* 0 Tw (success\). For example:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 222.6236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 24 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (int mu_init_something\(void\);) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 190.6236 cm +q +BT 1 0 0 1 0 14 Tm .253555 Tw 12 TL /F1 10 Tf 0 0 0 rg (All initialization functions are executed before any ) Tj 0 0 .501961 rg (test case) Tj 0 0 0 rg (, in an ) Tj 0 0 .501961 rg (implementation) Tj 0 0 0 rg (-dependant order, and if) Tj T* 0 Tw (one of them fail \(returns non-zero\), the whole ) Tj 0 0 .501961 rg (test suite ) Tj 0 0 0 rg (is skipped immediately.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 160.6236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (3.6. Termination) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 130.6236 cm +q +BT 1 0 0 1 0 14 Tm .359269 Tw 12 TL /F3 10 Tf 0 0 0 rg (Termination functions ) Tj /F1 10 Tf (are just like ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (functions, but they're executed ) Tj /F3 10 Tf (after ) Tj /F1 10 Tf (the ) Tj 0 0 .501961 rg (test cases) Tj 0 0 0 rg (, their) Tj T* 0 Tw (names start with ) Tj /F5 10 Tf (mu_term ) Tj /F1 10 Tf (and they return nothing. For example:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 97.42362 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 24 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (void mu_term_something\(void\);) Tj T* ET +Q +Q +Q +Q +Q + +endstream +endobj +% 'R261': class PDFStream +261 0 obj +% page stream +<< /Length 6908 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 744.0236 cm +q +BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (4. C++ Support) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 702.0236 cm +q +BT 1 0 0 1 0 26 Tm .625251 Tw 12 TL /F1 10 Tf 0 0 0 rg (You can use ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (with C++, the only care you must take is that, because of C++ ) Tj 0 0 .501961 rg (name mangling ) Tj 0 0 0 rg (\(and) Tj T* 0 Tw 1.208555 Tw /F4 10 Tf (mutest ) Tj /F1 10 Tf (relaying on function names\), you must declare your ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination) Tj T* 0 Tw 0 0 0 rg (functions as ) Tj /F5 10 Tf (extern) Tj ( ) Tj ("C" ) Tj /F1 10 Tf (\(see ) Tj 0 0 .501961 rg (exception_test.cpp ) Tj 0 0 0 rg (for an example\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 660.0236 cm +q +BT 1 0 0 1 0 26 Tm .386651 Tw 12 TL /F1 10 Tf 0 0 .501961 rg (Checks ) Tj 0 0 0 rg (become ) Tj /F4 10 Tf (exception-safe ) Tj /F1 10 Tf (when using ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (with a C++ compiler, and 2 extra ) Tj 0 0 .501961 rg (checks ) Tj 0 0 0 rg (designed for) Tj T* 0 Tw 1.558443 Tw (C++ get defined \() Tj 0 0 .501961 rg (mu_echeck\(\) ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (mu_eensure\(\)) Tj 0 0 0 rg (\). They assert that an expression throws a particular) Tj T* 0 Tw (exception.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 627.0236 cm +q +BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (5. Implementations) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 609.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (There are 2 big groups of possible implementations that I can think of: ) Tj /F4 10 Tf (static ) Tj /F1 10 Tf (and ) Tj /F4 10 Tf (dynamic) Tj /F1 10 Tf (.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 591.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F4 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (comes with one implementation of each group.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 561.0236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (5.1. Static Implementations) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 519.0236 cm +q +BT 1 0 0 1 0 26 Tm .398735 Tw 12 TL /F1 10 Tf 0 0 0 rg (Static implementations can be only written in C/C++ \(or other language that is link-compatible with C, like) Tj T* 0 Tw 3.460651 Tw (the ) Tj 0 0 .501961 rg (D Programming Language) Tj 0 0 0 rg (, but since one of the main goals of ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (is avoid unnecessary) Tj T* 0 Tw (dependencies, you probably don't want to depend on an extra language/compiler to run your tests =\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 489.0236 cm +q +BT 1 0 0 1 0 14 Tm 1.262485 Tw 12 TL /F1 10 Tf 0 0 0 rg (The main advantage is better debugging support, because you can run the ) Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (in a standard) Tj T* 0 Tw (debugger and see what happens with ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (very naturally.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 447.0236 cm +q +BT 1 0 0 1 0 26 Tm .439398 Tw 12 TL /F1 10 Tf 0 0 0 rg (The main disadvantage is, the ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (must be figured out in ) Tj /F4 10 Tf (compile-time) Tj /F1 10 Tf (, usually using some kind of) Tj T* 0 Tw .555868 Tw (code generation \(if you want to avoid writing repetitive code yourself\). There's also a limitation in the ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw (case) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination ) Tj 0 0 0 rg (functions names: they should be unique for all the ) Tj 0 0 .501961 rg (test program) Tj 0 0 0 rg (.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 420.0236 cm +q +BT 1 0 0 1 0 2.5 Tm 15 TL /F2 12.5 Tf 0 0 0 rg (5.1.1. C implementation) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 378.0236 cm +q +BT 1 0 0 1 0 26 Tm .44784 Tw 12 TL /F4 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (comes with a C static implementation. Only 3 files are needed: ) Tj /F5 10 Tf (mutest.c ) Tj /F1 10 Tf (\(the ) Tj /F4 10 Tf (user-independent) Tj T* 0 Tw 1.39686 Tw /F1 10 Tf (part of the ) Tj 0 0 .501961 rg (test program) Tj 0 0 0 rg (\), ) Tj /F5 10 Tf (mkmutest ) Tj /F1 10 Tf (\(a bash script for generating the ) Tj /F4 10 Tf (user-dependent ) Tj /F1 10 Tf (part of the ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw (program) Tj 0 0 0 rg (\) and ) Tj /F5 10 Tf (mutest.h ) Tj /F1 10 Tf (\(the header file that ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (should include\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 360.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (You can copy this 3 files to your project or install them at system-level and use them globally.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 330.0236 cm +q +BT 1 0 0 1 0 14 Tm 1.415984 Tw 12 TL /F1 10 Tf 0 0 0 rg (The procedure is simple, You should compile you ) Tj 0 0 .501961 rg (test suites) Tj 0 0 0 rg (, ) Tj /F5 10 Tf (mutest.c ) Tj /F1 10 Tf (and the generated output of) Tj T* 0 Tw /F5 10 Tf (mkmutest ) Tj /F1 10 Tf (as object files and link them together.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 312.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (For example:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 230.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 72 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 50 Tm /F5 10 Tf 12 TL ($ cc -c -o mutest.o mutest.c) Tj T* ($ cc -c -o test1.o test1.c) Tj T* ($ cc -c -o test2.o test2.c) Tj T* ($ mkmutest mutest.h test1.o test2.o | cc -xc -c -o runmutest.o -) Tj T* ($ cc -o testprg mutest.o test1.o test2.o runmutest.o) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 210.8236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Then you can run the ) Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (invoking it with no arguments:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 177.6236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 24 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL ($ ./testprg) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 153.6236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.1.1.1. ) Tj /F6 10 Tf (mkmutest ) Tj /F2 10 Tf (Invocation) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 123.6236 cm +q +BT 1 0 0 1 0 14 Tm 1.715318 Tw 12 TL /F1 10 Tf 0 0 0 rg (This small script take 1 mandatory positional argument: the path to the ) Tj /F5 10 Tf (mutest.h ) Tj /F1 10 Tf (file. All remaining) Tj T* 0 Tw (positional arguments should be object files representing ) Tj 0 0 .501961 rg (test suites) Tj 0 0 0 rg (.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 99.62362 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.1.1.2. Test Program Invocation) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 81.62362 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (The test program can be invoked without arguments, but can take some extra options:) Tj T* ET +Q +Q + +endstream +endobj +% 'R262': class PDFStream +262 0 obj +% page stream +<< /Length 7873 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 753.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F7 10 Tf 12 TL (-v) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 684.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 56 Tm T* ET +q +1 0 0 1 20 54 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Be verbose. This is accumulative, when you add extra ) Tj /F5 10 Tf (-v ) Tj /F1 10 Tf (you will get extra verbosity.) Tj T* ET +Q +Q +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 38 Tm .395542 Tw 12 TL /F1 10 Tf 0 0 0 rg (By default, you just get failed ) Tj 0 0 .501961 rg (checks ) Tj 0 0 0 rg (printed. If you use a single ) Tj /F5 10 Tf (-v) Tj /F1 10 Tf (, a summary of failed/passed ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw .690514 Tw (suites) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (test cases ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (checks ) Tj 0 0 0 rg (will be printed. If an extra ) Tj /F5 10 Tf (-v ) Tj /F1 10 Tf (is used, you'll see the current ) Tj 0 0 .501961 rg (test suite) Tj T* 0 Tw .099986 Tw 0 0 0 rg (being executed. Another ) Tj /F5 10 Tf (-v ) Tj /F1 10 Tf (and you'll get the current ) Tj 0 0 .501961 rg (test case) Tj 0 0 0 rg (, and another one, and you'll get each) Tj T* 0 Tw 0 0 .501961 rg (check) Tj 0 0 0 rg (.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 660.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.1.1.3. Dependencies) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 642.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Even when dependencies are kept minimal, there always be a few ;\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 624.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (To use this implementation you just need:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 618.0236 cm +Q +q +1 0 0 1 62.69291 618.0236 cm +Q +q +1 0 0 1 62.69291 606.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (A C compiler \(you already needed that, so...\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 600.0236 cm +Q +q +1 0 0 1 62.69291 588.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (nm ) Tj /F1 10 Tf (program \(from ) Tj 0 0 .501961 rg (GNU Binutils) Tj 0 0 0 rg (, included in virtually any *NIX\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 582.0236 cm +Q +q +1 0 0 1 62.69291 570.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj 0 0 .501961 rg (GNU Bash ) Tj 0 0 0 rg (shell interpreter \(also included in virtually any *NIX\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 570.0236 cm +Q +q +1 0 0 1 62.69291 540.0236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (5.2. Dynamic Implementations) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 498.0236 cm +q +BT 1 0 0 1 0 26 Tm .84686 Tw 12 TL /F1 10 Tf 0 0 0 rg (Dynamic implementations, on the other hand, can be written in any language that can access to shared) Tj T* 0 Tw 2.661163 Tw (objects. The idea is to inspect a shared object for ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (and run them, without requiring any) Tj T* 0 Tw (information about ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (at compile time.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 432.0236 cm +q +BT 1 0 0 1 0 50 Tm 1.684983 Tw 12 TL /F1 10 Tf 0 0 0 rg (There are several advantages in this kind of implementations. The dynamic nature let you completely) Tj T* 0 Tw 1.71686 Tw (separate the ) Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (from the user-written ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (and you can choose at ) Tj /F4 10 Tf (run-time ) Tj /F1 10 Tf (what ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw .237984 Tw (suites ) Tj 0 0 0 rg (to execute by just selecting the correct shared objects. Also, ) Tj 0 0 .501961 rg (test case) Tj 0 0 0 rg (, ) Tj 0 0 .501961 rg (initialization ) Tj 0 0 0 rg (and ) Tj 0 0 .501961 rg (termination) Tj T* 0 Tw .134431 Tw 0 0 0 rg (functions names only have to be unique in the scope of the ) Tj 0 0 .501961 rg (test suites) Tj 0 0 0 rg (, because ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (are completely) Tj T* 0 Tw (isolated in separate shared objects.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 402.0236 cm +q +BT 1 0 0 1 0 14 Tm .720988 Tw 12 TL /F1 10 Tf 0 0 0 rg (But everything comes at a price, and the higher price to pay is ) Tj /F4 10 Tf (debuggability) Tj /F1 10 Tf (. It's a little harder to plug a) Tj T* 0 Tw (debugger to a shared object.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 375.0236 cm +q +BT 1 0 0 1 0 2.5 Tm 15 TL /F2 12.5 Tf 0 0 0 rg (5.2.1. Python implementation) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 333.0236 cm +q +BT 1 0 0 1 0 26 Tm 1.498651 Tw 12 TL /F1 10 Tf 0 0 0 rg (This implementation is much simpler and elegant than the ) Tj 0 0 .501961 rg (C implementation) Tj 0 0 0 rg (. Only 2 files are needed:) Tj T* 0 Tw .951318 Tw /F5 10 Tf (mutest ) Tj /F1 10 Tf (\() Tj 0 0 .501961 rg (test program ) Tj 0 0 0 rg (written in ) Tj 0 0 .501961 rg (Python ) Tj 0 0 0 rg (using ) Tj 0 0 .501961 rg (ctypes ) Tj 0 0 0 rg (module to access the shared object symbols\) and) Tj T* 0 Tw /F5 10 Tf (mutest.h ) Tj /F1 10 Tf (\(the header file that ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (should include\).) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 303.0236 cm +q +BT 1 0 0 1 0 14 Tm 2.823059 Tw 12 TL /F1 10 Tf 0 0 0 rg (Since both implementations provided by ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (share the same ) Tj /F5 10 Tf (mutest.h) Tj /F1 10 Tf (, you should define the) Tj T* 0 Tw /F5 10 Tf (MUTEST_PY ) Tj /F1 10 Tf (macro when compiling the ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (if you will run them using this implementation.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 273.0236 cm +q +BT 1 0 0 1 0 14 Tm .452619 Tw 12 TL /F1 10 Tf 0 0 0 rg (As with the ) Tj 0 0 .501961 rg (C implementation) Tj 0 0 0 rg (, you can copy this 2 files to your project or install them at system-level and) Tj T* 0 Tw (use them globally.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 243.0236 cm +q +BT 1 0 0 1 0 14 Tm 1.578735 Tw 12 TL /F1 10 Tf 0 0 0 rg (The procedure is even simpler than the ) Tj 0 0 .501961 rg (C implementation) Tj 0 0 0 rg (: compile and link you ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (as shared) Tj T* 0 Tw (objects and then run the ) Tj /F5 10 Tf (mutest ) Tj /F1 10 Tf (program passing the shared objects as arguments. For example:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 161.8236 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 468.6898 72 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 50 Tm /F5 10 Tf 12 TL ($ cc -c -fPIC -DMUTEST_PY -o test1.o test1.c) Tj T* ($ cc -shared -o test1.so test1.o) Tj T* ($ cc -c -fPIC -DMUTEST_PY -o test2.o test2.c) Tj T* ($ cc -shared -o test2.so test2.o) Tj T* ($ mutest test1.so test2.so) Tj T* ET +Q +Q +Q +Q +Q +q +1 0 0 1 62.69291 141.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (That's it.) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 117.8236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.2.1.1. ) Tj /F6 10 Tf (mutest ) Tj /F2 10 Tf (Invocation) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 87.82362 cm +q +BT 1 0 0 1 0 14 Tm 1.505984 Tw 12 TL /F5 10 Tf 0 0 0 rg (mutest ) Tj /F1 10 Tf (program takes ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (shared objects to run as positional arguments. It accepts the same) Tj T* 0 Tw (options as the ) Tj 0 0 .501961 rg (C implementation's test program ) Tj 0 0 0 rg (and some extra options are accepted too:) Tj T* ET +Q +Q + +endstream +endobj +% 'R263': class PDFStream +263 0 obj +% page stream +<< /Length 6814 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 753.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F7 10 Tf 12 TL (--verbose) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 738.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Alias for ) Tj /F5 10 Tf (-v) Tj /F1 10 Tf (.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 722.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F7 10 Tf 0 0 0 rg (-q) Tj /F3 10 Tf (, ) Tj /F7 10 Tf (--quiet) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 707.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Be quiet \(no output is shown at all\).) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 691.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F7 10 Tf 0 0 0 rg (-s) Tj /F3 10 Tf (, ) Tj /F7 10 Tf (--search) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 676.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Search for ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (\(*.so\) in the current directory and add them to the list of ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (to run.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 660.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F7 10 Tf 0 0 0 rg (-h) Tj /F3 10 Tf (, ) Tj /F7 10 Tf (--help) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 645.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Show a help message and exit.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 621.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F2 10 Tf 0 0 0 rg (5.2.1.2. Dependencies) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 603.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (As with the ) Tj 0 0 .501961 rg (C implementation) Tj 0 0 0 rg (, some minor dependencies are needed:) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 597.0236 cm +Q +q +1 0 0 1 62.69291 597.0236 cm +Q +q +1 0 0 1 62.69291 585.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 .501961 rg (Python ) Tj 0 0 0 rg (\(2.5 or later\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 579.0236 cm +Q +q +1 0 0 1 62.69291 567.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +q +1 0 0 1 6 -3 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL 10.5 0 Td (\177) Tj T* -10.5 0 Td ET +Q +Q +q +1 0 0 1 23 -3 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (The ) Tj /F5 10 Tf (nm ) Tj /F1 10 Tf (program \(from ) Tj 0 0 .501961 rg (GNU Binutils) Tj 0 0 0 rg (, included in virtually any *NIX\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 567.0236 cm +Q +q +1 0 0 1 62.69291 549.0236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (You will need a C compiler for building the ) Tj 0 0 .501961 rg (test suites ) Tj 0 0 0 rg (too, but technically is not needed by ) Tj /F4 10 Tf (mutest ) Tj /F1 10 Tf (itself ;\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 516.0236 cm +q +BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (6. Reference) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 486.0236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (6.1. ) Tj /F7 15 Tf (mu_check\(\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 468.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Synopsis) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 453.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (mu_check\(expression\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 437.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Description) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 422.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Check that the ) Tj /F5 10 Tf (expression ) Tj /F1 10 Tf (evaluates to ) Tj /F4 10 Tf (true) Tj /F1 10 Tf (. Continue with the ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (if fail.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 406.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Availability) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 391.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Always) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 375.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Example) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 298.8236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 63.2 Tm T* ET +q +1 0 0 1 20 0 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 448.6898 72 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 50 Tm /F5 10 Tf 12 TL (void mu_test\(void\)) Tj T* ({) Tj T* ( mu_check\(5 == 4\); /* fail */) Tj T* ( mu_check\(5 == 5\); /* excecuted, pass */) Tj T* (}) Tj T* ET +Q +Q +Q +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 268.8236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (6.2. ) Tj /F7 15 Tf (mu_ensure\(\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 250.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Synopsis) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 235.8236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F5 10 Tf 12 TL (mu_ensure\(expression\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 219.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Description) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 204.8236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (Check that the ) Tj /F5 10 Tf (expression ) Tj /F1 10 Tf (evaluates to ) Tj /F4 10 Tf (true) Tj /F1 10 Tf (. Interrupt the ) Tj 0 0 .501961 rg (test case ) Tj 0 0 0 rg (if fail.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 188.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Availability) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 173.8236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (Always) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 157.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Example) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 81.62362 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 63.2 Tm T* ET +q +1 0 0 1 20 0 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 448.6898 72 re B* +Q +q +0 0 0 rg +BT 1 0 0 1 0 50 Tm /F5 10 Tf 12 TL (void mu_test\(void\)) Tj T* ({) Tj T* ( mu_ensure\(5 == 4\); /* fail */) Tj T* ( mu_check\(5 == 5\); /* not excecuted */) Tj T* (}) Tj T* ET +Q +Q +Q +Q +Q +q +Q +Q + +endstream +endobj +% 'R264': class PDFStream +264 0 obj +% page stream +<< /Length 4504 >> +stream +1 0 0 1 0 0 cm BT /F1 12 Tf 14.4 TL ET +q +1 0 0 1 62.69291 747.0236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (6.3. ) Tj /F7 15 Tf (mu_echeck\(\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 729.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Synopsis) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 714.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (mu_echeck\(class,) Tj ( ) Tj (expression\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 698.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Description) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 671.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 14 Tm T* ET +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 14 Tm 1.408443 Tw 12 TL /F1 10 Tf 0 0 0 rg (Check that the ) Tj /F5 10 Tf (expression ) Tj /F1 10 Tf (throws a specific exception ) Tj /F5 10 Tf (class ) Tj /F1 10 Tf (\(or subclass\). Continue with the) Tj T* 0 Tw 0 0 .501961 rg (test case ) Tj 0 0 0 rg (if fail.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 655.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Availability) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 640.0236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (C++ only) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 624.0236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Example) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 475.8236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 135.2 Tm T* ET +q +1 0 0 1 20 0 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 448.6898 144 re B* +Q +q +BT 1 0 0 1 0 122 Tm 12 TL /F5 10 Tf 0 0 0 rg (#include ) Tj (<) Tj (stdexcept) Tj (>) Tj T* T* (extern "C") Tj T* ({) Tj T* ( void mu_test\(void\)) Tj T* ( {) Tj T* ( mu_echeck\(std::exception, true\); /* fail */) Tj T* ( mu_echeck\(std::exception,) Tj T* ( throw std::runtime_error\("!"\)\); /* excecuted, pass */) Tj T* ( }) Tj T* (}) Tj T* ET +Q +Q +Q +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 445.8236 cm +q +BT 1 0 0 1 0 3 Tm 18 TL /F3 15 Tf 0 0 0 rg (6.4. ) Tj /F7 15 Tf (mu_eensure\(\)) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 427.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Synopsis) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 412.8236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F5 10 Tf 0 0 0 rg (mu_eensure\(class,) Tj ( ) Tj (expression\)) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 396.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Description) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 369.8236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 14 Tm T* ET +q +1 0 0 1 20 0 cm +q +BT 1 0 0 1 0 14 Tm 1.749982 Tw 12 TL /F1 10 Tf 0 0 0 rg (Check that the ) Tj /F5 10 Tf (expression ) Tj /F1 10 Tf (throws a specific exception ) Tj /F5 10 Tf (class ) Tj /F1 10 Tf (\(or subclass\). Interrupt the ) Tj 0 0 .501961 rg (test) Tj T* 0 Tw (case ) Tj 0 0 0 rg (if fail.) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 353.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Availability) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 338.8236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 2 Tm T* ET +q +1 0 0 1 20 0 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F1 10 Tf 12 TL (C++ only) Tj T* ET +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 322.8236 cm +q +0 0 0 rg +BT 1 0 0 1 0 2 Tm /F3 10 Tf 12 TL (Example) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 174.6236 cm +0 0 0 rg +BT /F1 10 Tf 12 TL ET +BT 1 0 0 1 0 135.2 Tm T* ET +q +1 0 0 1 20 0 cm +q +q +1 0 0 1 0 0 cm +q +1 0 0 1 6.6 6.6 cm +q +.662745 .662745 .662745 RG +.5 w +.960784 .960784 .862745 rg +n -6 -6 448.6898 144 re B* +Q +q +BT 1 0 0 1 0 122 Tm 12 TL /F5 10 Tf 0 0 0 rg (#include ) Tj (<) Tj (stdexcept) Tj (>) Tj T* T* (extern "C") Tj T* ({) Tj T* ( void mu_test\(void\)) Tj T* ( {) Tj T* ( mu_eensure\(std::exception, true\); /* fail */) Tj T* ( mu_echeck\(std::exception,) Tj T* ( throw std::runtime_error\("!"\)\); /* not excecuted */) Tj T* ( }) Tj T* (}) Tj T* ET +Q +Q +Q +Q +Q +q +Q +Q +q +1 0 0 1 62.69291 141.6236 cm +q +BT 1 0 0 1 0 3.5 Tm 21 TL /F3 17.5 Tf 0 0 0 rg (7. About) Tj T* ET +Q +Q +q +1 0 0 1 62.69291 123.6236 cm +q +BT 1 0 0 1 0 2 Tm 12 TL /F1 10 Tf 0 0 0 rg (This manual was written using ) Tj 0 0 .501961 rg (reStructuredText) Tj 0 0 0 rg (.) Tj T* ET +Q +Q + +endstream +endobj +% 'R265': class PDFPageLabels +265 0 obj +% Document Root +<< /Nums [ 0 + 266 0 R + 1 + 267 0 R + 2 + 268 0 R + 3 + 269 0 R + 4 + 270 0 R + 5 + 271 0 R + 6 + 272 0 R + 7 + 273 0 R + 8 + 274 0 R + 9 + 275 0 R ] >> +endobj +% 'R266': class PDFPageLabel +266 0 obj +% None +<< /S /D + /St 1 >> +endobj +% 'R267': class PDFPageLabel +267 0 obj +% None +<< /S /D + /St 2 >> +endobj +% 'R268': class PDFPageLabel +268 0 obj +% None +<< /S /D + /St 3 >> +endobj +% 'R269': class PDFPageLabel +269 0 obj +% None +<< /S /D + /St 4 >> +endobj +% 'R270': class PDFPageLabel +270 0 obj +% None +<< /S /D + /St 5 >> +endobj +% 'R271': class PDFPageLabel +271 0 obj +% None +<< /S /D + /St 6 >> +endobj +% 'R272': class PDFPageLabel +272 0 obj +% None +<< /S /D + /St 7 >> +endobj +% 'R273': class PDFPageLabel +273 0 obj +% None +<< /S /D + /St 8 >> +endobj +% 'R274': class PDFPageLabel +274 0 obj +% None +<< /S /D + /St 9 >> +endobj +% 'R275': class PDFPageLabel +275 0 obj +% None +<< /S /D + /St 10 >> +endobj +xref +0 276 +0000000000 65535 f +0000000113 00000 n +0000000286 00000 n +0000000451 00000 n +0000000640 00000 n +0000000827 00000 n +0000001068 00000 n +0000001303 00000 n +0000001496 00000 n +0000001756 00000 n +0000001998 00000 n +0000002241 00000 n +0000002484 00000 n +0000002727 00000 n +0000002970 00000 n +0000003214 00000 n +0000003458 00000 n +0000003702 00000 n +0000003946 00000 n +0000004190 00000 n +0000004434 00000 n +0000004678 00000 n +0000004922 00000 n +0000005166 00000 n +0000005394 00000 n +0000005862 00000 n +0000006105 00000 n +0000006348 00000 n +0000006592 00000 n +0000006836 00000 n +0000007080 00000 n +0000007324 00000 n +0000007568 00000 n +0000007812 00000 n +0000008056 00000 n +0000008300 00000 n +0000008544 00000 n +0000008788 00000 n +0000009032 00000 n +0000009276 00000 n +0000009520 00000 n +0000009764 00000 n +0000010008 00000 n +0000010252 00000 n +0000010496 00000 n +0000010740 00000 n +0000010984 00000 n +0000011228 00000 n +0000011472 00000 n +0000011716 00000 n +0000011960 00000 n +0000012204 00000 n +0000012448 00000 n +0000012692 00000 n +0000012936 00000 n +0000013180 00000 n +0000013424 00000 n +0000013654 00000 n +0000013830 00000 n +0000014074 00000 n +0000014318 00000 n +0000014562 00000 n +0000014806 00000 n +0000015050 00000 n +0000015294 00000 n +0000015538 00000 n +0000015782 00000 n +0000016026 00000 n +0000016270 00000 n +0000016514 00000 n +0000016758 00000 n +0000017002 00000 n +0000017246 00000 n +0000017490 00000 n +0000017734 00000 n +0000017978 00000 n +0000018222 00000 n +0000018466 00000 n +0000018710 00000 n +0000018954 00000 n +0000019198 00000 n +0000019442 00000 n +0000019686 00000 n +0000019930 00000 n +0000020174 00000 n +0000020418 00000 n +0000020662 00000 n +0000020906 00000 n +0000021150 00000 n +0000021394 00000 n +0000021638 00000 n +0000021882 00000 n +0000022125 00000 n +0000022405 00000 n +0000022672 00000 n +0000022909 00000 n +0000023175 00000 n +0000023441 00000 n +0000023710 00000 n +0000023963 00000 n +0000024930 00000 n +0000025174 00000 n +0000025509 00000 n +0000025754 00000 n +0000025999 00000 n +0000026244 00000 n +0000026489 00000 n +0000026734 00000 n +0000026963 00000 n +0000027338 00000 n +0000027638 00000 n +0000027884 00000 n +0000028130 00000 n +0000028376 00000 n +0000028620 00000 n +0000028866 00000 n +0000029112 00000 n +0000029358 00000 n +0000029604 00000 n +0000029833 00000 n +0000030235 00000 n +0000030480 00000 n +0000030726 00000 n +0000030972 00000 n +0000031218 00000 n +0000031464 00000 n +0000031710 00000 n +0000031955 00000 n +0000032200 00000 n +0000032446 00000 n +0000032692 00000 n +0000032938 00000 n +0000033184 00000 n +0000033430 00000 n +0000033676 00000 n +0000033922 00000 n +0000034168 00000 n +0000034414 00000 n +0000034660 00000 n +0000034906 00000 n +0000035152 00000 n +0000035398 00000 n +0000035644 00000 n +0000035888 00000 n +0000036134 00000 n +0000036380 00000 n +0000036609 00000 n +0000037180 00000 n +0000037445 00000 n +0000037690 00000 n +0000037936 00000 n +0000038182 00000 n +0000038428 00000 n +0000038674 00000 n +0000038919 00000 n +0000039165 00000 n +0000039410 00000 n +0000039662 00000 n +0000039908 00000 n +0000040154 00000 n +0000040400 00000 n +0000040646 00000 n +0000040892 00000 n +0000041138 00000 n +0000041384 00000 n +0000041630 00000 n +0000041876 00000 n +0000042122 00000 n +0000042368 00000 n +0000042614 00000 n +0000042860 00000 n +0000043091 00000 n +0000043293 00000 n +0000043522 00000 n +0000044069 00000 n +0000044257 00000 n +0000044503 00000 n +0000044749 00000 n +0000044995 00000 n +0000045241 00000 n +0000045486 00000 n +0000045732 00000 n +0000045978 00000 n +0000046223 00000 n +0000046482 00000 n +0000046738 00000 n +0000046984 00000 n +0000047230 00000 n +0000047476 00000 n +0000047722 00000 n +0000047968 00000 n +0000048213 00000 n +0000048459 00000 n +0000048705 00000 n +0000048951 00000 n +0000049197 00000 n +0000049443 00000 n +0000049689 00000 n +0000049934 00000 n +0000050178 00000 n +0000050443 00000 n +0000050689 00000 n +0000050935 00000 n +0000051181 00000 n +0000051427 00000 n +0000051673 00000 n +0000051919 00000 n +0000052148 00000 n +0000052780 00000 n +0000053026 00000 n +0000053272 00000 n +0000053517 00000 n +0000053761 00000 n +0000054021 00000 n +0000054267 00000 n +0000054513 00000 n +0000054742 00000 n +0000055134 00000 n +0000055380 00000 n +0000055626 00000 n +0000055871 00000 n +0000056118 00000 n +0000056455 00000 n +0000056619 00000 n +0000056938 00000 n +0000057067 00000 n +0000057333 00000 n +0000057663 00000 n +0000057938 00000 n +0000058254 00000 n +0000058561 00000 n +0000058871 00000 n +0000059151 00000 n +0000059437 00000 n +0000059718 00000 n +0000059984 00000 n +0000060290 00000 n +0000060562 00000 n +0000060840 00000 n +0000061185 00000 n +0000061559 00000 n +0000061897 00000 n +0000062232 00000 n +0000062603 00000 n +0000062903 00000 n +0000063282 00000 n +0000063645 00000 n +0000063970 00000 n +0000064267 00000 n +0000064582 00000 n +0000064854 00000 n +0000065147 00000 n +0000065440 00000 n +0000065719 00000 n +0000065936 00000 n +0000066136 00000 n +0000070258 00000 n +0000079190 00000 n +0000083788 00000 n +0000088395 00000 n +0000093547 00000 n +0000100700 00000 n +0000107709 00000 n +0000115683 00000 n +0000122598 00000 n +0000127207 00000 n +0000127429 00000 n +0000127508 00000 n +0000127587 00000 n +0000127666 00000 n +0000127745 00000 n +0000127824 00000 n +0000127903 00000 n +0000127982 00000 n +0000128061 00000 n +0000128140 00000 n +trailer +<< /ID + % ReportLab generated PDF document -- digest (http://www.reportlab.com) + [(\010\207@\355\312B{y\207\001\310\013\021\257\346z) (\010\207@\355\312B{y\207\001\310\013\021\257\346z)] + + /Info 223 0 R + /Root 222 0 R + /Size 276 >> +startxref +128189 +%%EOF diff --git a/source/proj/mutest/releases/.htaccess b/source/proj/mutest/releases/.htaccess new file mode 100644 index 0000000..e1d2560 --- /dev/null +++ b/source/proj/mutest/releases/.htaccess @@ -0,0 +1 @@ +Options +Indexes diff --git a/source/proj/mutest/releases/manual-1.0.html b/source/proj/mutest/releases/manual-1.0.html new file mode 100644 index 0000000..a2fa903 --- /dev/null +++ b/source/proj/mutest/releases/manual-1.0.html @@ -0,0 +1,873 @@ + + + + + + +mutest - A simple micro unit testing framework for C + + + + + + +
+

mutest - A simple micro unit testing framework for C

+ +++ + + + + + + + + + + + +
Author:Leandro Lucarella
Contact:llucax@gmail.com
Version:1.0
Date:2008-12-25
Copyright:Leandro Lucarella (2008), released under the BOLA license
+
+

Abstract

+

mutest is a micro unit testing framework for C (with some +C++ support). It's mostly an idea (it even comes with +2 implementations of the idea!) with the goal of being easy to use +(just write your test cases grouped in test suites and you're +set) and so small and simple that you don't mind to copy the files to +your project and just use it (i.e., no dependencies).

+

The idea is simple: a source file is a test suite, a function is +a test case (special functions can be used for test suite +initialization and termination), which can can have several checks. +Checks comes in 2 flavors, one that only prints an error, and one that +terminates the current test case too. A (normally) automated test +program run all the test suites and print some stats. It fails +(returns non-zero) if any test suite fails.

+
+ +
+

1.   Installation

+

Download the latest distribution tarball and uncompress it.

+

You can also download any release from the releases directory or get it +using Git directly from the Git repository.

+

You can get this manual too, or a PDF version of it.

+

To actually install mutest run:

+
+$ make install
+
+

Default installation path is /usr/local (because of that, you'll probably +need superuser privileges to install to the default location). You can override +that by passing the prefix make variable, for example:

+
+$ make prefix=/opt/mutest install
+
+

If you want to install just the docs, you can do:

+
+$ make install-doc
+
+

Or even install-readme, install-html or install-pdf if you are too +picky.

+

If you want to install just one particular implementation, to can use the +install-c and install-py targets.

+
+
+

2.   Quick Sample

+

You can find some samples in the sample directory.

+

This is an example taken from there. A simple module called factorial.c +with its corresponding test suite (factorial_test.c).

+

You can see some C++ support in the exception_test.cpp test suite.

+
+

2.1.   factorial.c

+
+/*
+ * This file is part of mutest, a simple micro unit testing framework for C.
+ *
+ * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
+ * under the BOLA license, please see the LICENSE file or visit:
+ * http://blitiri.com.ar/p/bola/
+ *
+ * This is an example module that calculates a factorial.
+ *
+ * Please, read the README file for more details.
+ */
+
+unsigned factorial(unsigned x) {
+	if (x <= 1)
+		return 1;
+	return x * factorial(x-1);
+}
+
+
+
+
+
+

2.2.   factorial_test.c

+
+/*
+ * This file is part of mutest, a simple micro unit testing framework for C.
+ *
+ * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
+ * under the BOLA license, please see the LICENSE file or visit:
+ * http://blitiri.com.ar/p/bola/
+ *
+ * This is the factorial module test suite. Each (public) function starting
+ * with mu_test will be picked up by mkmutest as a test case.
+ *
+ * Please, read the README file for more details.
+ */
+
+#include "factorial.h"
+
+#include "../mutest.h"
+
+void mu_test_factorial_zero() {
+	unsigned x = factorial(0);
+	mu_check(x == 1);
+}
+
+void mu_test_factorial_one() {
+	unsigned x = factorial(1);
+	/* this test is wrong on purpose, to see how it fails */
+	mu_check(x == 2);
+}
+
+void mu_test_factorial_positive() {
+	unsigned x = factorial(2);
+	/* this test is wrong on purpose, to see how it fails */
+	mu_check(x == 3);
+
+	x = factorial(3);
+	/* we don't want to continue if this fails, because the next result
+	 * depends on this one. This one will succeed. */
+	mu_ensure(x == 6);
+
+	x = factorial(x);
+	mu_check(x == 720);
+
+	x = factorial(4);
+	mu_ensure(x == 6); /* same as before, but this one will fail. */
+
+	x = factorial(x-15); /* and this will never be executed */
+	mu_check(x == 362881); /* but if excecuted, will fail */
+}
+
+
+
+
+
+

2.3.   exception_test.cpp

+
+/*
+ * This file is part of mutest, a simple micro unit testing framework for C.
+ *
+ * mutest was written by Leandro Lucarella <llucax@gmail.com> and is released
+ * under the BOLA license, please see the LICENSE file or visit:
+ * http://blitiri.com.ar/p/bola/
+ *
+ * This is a C++ module test suite. It shows how to use checks involving
+ * exceptions.
+ *
+ * Please, read the README file for more details.
+ */
+
+#include <stdexcept> // std::out_of_range
+#include <vector> // std::vector
+
+#include "../mutest.h"
+
+extern "C" {
+
+void mu_test_exceptions() {
+	std::vector<int> v(1);
+	// ok
+	mu_check(v.at(0) == 0);
+	// throws! This fails
+	mu_check(v.at(1) == 0);
+	// ok, we expect the exception to be thrown, and it does
+	mu_echeck(std::out_of_range, v.at(1));
+	// fails! We expect this to throw, but it doesn't
+	mu_echeck(std::out_of_range, v.at(0));
+	// fails again, but this time the show is over (note the "ensure")
+	mu_eensure(std::out_of_range, v.at(0));
+	// this will never be executed (it should fail if it is)
+	mu_check(v.empty());
+}
+
+} // extern "C"
+
+
+
+
+
+
+

3.   Concepts

+

mutest is about 4 simple concepts: test program, test suite, test +case and checks. Well, to be honest you probably will need test suite +initialization and termination too =)

+
+

3.1.   Test Program

+

A test program is the higher level unit of mutest. The test program is +the one in charge of running all your tests. Probably one of the more important +features of mutest is that you are not supposed to bother about the test +program. So, different implementations have different ways to tackle this. +Some need more or less interactions from your part, and each have their pros +and cons.

+

But this is all you need to know for now, for more details see how the test +program is implemented by your implementation of choice.

+
+
+

3.2.   Test Suite

+

A test suite is the higher level unit of mutest that you should +care about =). Is not much more than a way to group test cases. Code-wise, +a test suite is a C (or C++) module (or compilation unit). Not clear enough? +A unit test is an object file (could be a shared object depending on the +implementation). This module should have one or more test cases and it +could have any number (including zero) of initialization and termination +functions.

+

A test suite, is inspected by the test program for test cases and +initialization and termination functions, and run them.

+

A test suite fail if one or more test cases fail, and it's skipped if one or +more initialization functions fail (or, depending on the implementation, if +the test suite can't be loaded at all).

+
+
+

3.3.   Test Case

+

A test case is just a plain function with a special signature and name. +A test case function name must start with mu_test, and take no arguments +and return nothing. For example:

+
+void mu_test_something(void);
+
+

A test case (probably) only make sense if it has checks. A test case succeed +only if all its checks succeed too.

+

Test are executed in an implementation-dependant order, but usually the +default order is alphabetical.

+
+
+

3.4.   Checks

+

Checks are assertions that a test case must pass (a boolean expression that +must evaluate to true). There are 2 big flavors of checks: check and +ensure. check just print an error (and mark the test case as +failed) and ensure halt the test case execution, jumping to the next +one.

+

For better C++ support there are check macros that assert that a specified +exception is thrown (instead of check for a boolean expression to evaluate to +true).

+

You can take a look at the reference to see the different flavors of check +macros in more detail.

+
+
+

3.5.   Initialization

+

Sometimes you need to setup some environment shared between all the test +cases in a test suite. You can use initialization functions for this.

+

An initialization function, like a test case, is a plain C function with +a special name and signature. The name must start with mu_init and it must +take no arguments, and return an error code (0 being success). For +example:

+
+int mu_init_something(void);
+
+

All initialization functions are executed before any test case, in an +implementation-dependant order, and if one of them fail (returns non-zero), +the whole test suite is skipped immediately.

+
+
+

3.6.   Termination

+

Termination functions are just like initialization functions, but they're +executed after the test cases, their names start with mu_term and +they return nothing. For example:

+
+void mu_term_something(void);
+
+
+
+
+

4.   C++ Support

+

You can use mutest with C++, the only care you must take is that, because of +C++ name mangling (and mutest relaying on function names), you must +declare your test cases and initialization and termination functions as +extern "C" (see exception_test.cpp for an example).

+

Checks become exception-safe when using mutest with a C++ compiler, and +2 extra checks designed for C++ get defined (mu_echeck() and +mu_eensure()). They assert that an expression throws a particular exception.

+
+
+

5.   Implementations

+

There are 2 big groups of possible implementations that I can think +of: static and dynamic.

+

mutest comes with one implementation of each group.

+
+

5.1.   Static Implementations

+

Static implementations can be only written in C/C++ (or other language that is +link-compatible with C, like the D Programming Language, but since one of +the main goals of mutest is avoid unnecessary dependencies, you probably +don't want to depend on an extra language/compiler to run your tests =).

+

The main advantage is better debugging support, because you can run the test +program in a standard debugger and see what happens with test cases very +naturally.

+

The main disadvantage is, the test suites must be figured out in +compile-time, usually using some kind of code generation (if you want to +avoid writing repetitive code yourself). There's also a limitation in the test +case, initialization and termination functions names: they should be unique +for all the test program.

+
+

5.1.1.   C implementation

+

mutest comes with a C static implementation. Only 3 files are needed: +mutest.c (the user-independent part of the test program), mkmutest +(a bash script for generating the user-dependent part of the test program) +and mutest.h (the header file that test suites should include).

+

You can copy this 3 files to your project or install them at system-level and +use them globally.

+

The procedure is simple, You should compile you test suites, mutest.c +and the generated output of mkmutest as object files and link them +together.

+

For example:

+
+$ cc -c -o mutest.o mutest.c
+$ cc -c -o test1.o test1.c
+$ cc -c -o test2.o test2.c
+$ mkmutest mutest.h test1.o test2.o | cc -xc -c -o runmutest.o -
+$ cc -o testprg mutest.o test1.o test2.o runmutest.o
+
+

Then you can run the test program invoking it with no arguments:

+
+$ ./testprg
+
+
+

5.1.1.1.   mkmutest Invocation

+

This small script take 1 mandatory positional argument: the path to the +mutest.h file. All remaining positional arguments should be object files +representing test suites.

+
+
+

5.1.1.2.   Test Program Invocation

+

The test program can be invoked without arguments, but can take some extra +options:

+
+
-v
+

Be verbose. This is accumulative, when you add extra -v you will +get extra verbosity.

+

By default, you just get failed checks printed. If you use a single +-v, a summary of failed/passed test suites, test cases and +checks will be printed. If an extra -v is used, you'll see the current +test suite being executed. Another -v and you'll get the current +test case, and another one, and you'll get each check.

+
+
+
+
+

5.1.1.3.   Dependencies

+

Even when dependencies are kept minimal, there always be a few ;)

+

To use this implementation you just need:

+
    +
  • A C compiler (you already needed that, so...)
  • +
  • The nm program (from GNU Binutils, included in virtually any *NIX)
  • +
  • The GNU Bash shell interpreter (also included in virtually any *NIX)
  • +
+
+
+
+
+

5.2.   Dynamic Implementations

+

Dynamic implementations, on the other hand, can be written in any language that +can access to shared objects. The idea is to inspect a shared object for test +suites and run them, without requiring any information about test suites +at compile time.

+

There are several advantages in this kind of implementations. The dynamic +nature let you completely separate the test program from the user-written +test suites and you can choose at run-time what test suites to execute +by just selecting the correct shared objects. Also, test case, +initialization and termination functions names only have to be unique in the +scope of the test suites, because test suites are completely isolated in +separate shared objects.

+

But everything comes at a price, and the higher price to pay is +debuggability. It's a little harder to plug a debugger to a shared object.

+
+

5.2.1.   Python implementation

+

This implementation is much simpler and elegant than the C implementation. +Only 2 files are needed: mutest (test program written in Python using +ctypes module to access the shared object symbols) and mutest.h (the +header file that test suites should include).

+

Since both implementations provided by mutest share the same mutest.h, +you should define the MUTEST_PY macro when compiling the test suites if +you will run them using this implementation.

+

As with the C implementation, you can copy this 2 files to your project or +install them at system-level and use them globally.

+

The procedure is even simpler than the C implementation: compile and link +you test suites as shared objects and then run the mutest program +passing the shared objects as arguments. For example:

+
+$ cc -c -fPIC -DMUTEST_PY -o test1.o test1.c
+$ cc -shared -o test1.so test1.o
+$ cc -c -fPIC -DMUTEST_PY -o test2.o test2.c
+$ cc -shared -o test2.so test2.o
+$ mutest test1.so test2.so
+
+

That's it.

+
+

5.2.1.1.   mutest Invocation

+

mutest program takes test suites shared objects to run as positional +arguments. It accepts the same options as the C implementation's test +program and some extra options are accepted too:

+
+
--verbose
+
Alias for -v.
+
-q, --quiet
+
Be quiet (no output is shown at all).
+
-s, --search
+
Search for test suites (*.so) in the current directory and add them +to the list of test suites to run.
+
-h, --help
+
Show a help message and exit.
+
+
+
+

5.2.1.2.   Dependencies

+

As with the C implementation, some minor dependencies are needed:

+
    +
  • Python (2.5 or later)
  • +
  • The nm program (from GNU Binutils, included in virtually any *NIX)
  • +
+

You will need a C compiler for building the test suites too, but technically +is not needed by mutest itself ;)

+
+
+
+
+
+

6.   Reference

+
+

6.1.   mu_check()

+
+
Synopsis
+
mu_check(expression)
+
Description
+
Check that the expression evaluates to true. Continue with the +test case if fail.
+
Availability
+
Always
+
Example
+
+void mu_test(void)
+{
+    mu_check(5 == 4); /* fail */
+    mu_check(5 == 5); /* excecuted, pass */
+}
+
+
+
+
+
+

6.2.   mu_ensure()

+
+
Synopsis
+
mu_ensure(expression)
+
Description
+
Check that the expression evaluates to true. Interrupt the test +case if fail.
+
Availability
+
Always
+
Example
+
+void mu_test(void)
+{
+    mu_ensure(5 == 4); /* fail */
+    mu_check(5 == 5); /* not excecuted */
+}
+
+
+
+
+
+

6.3.   mu_echeck()

+
+
Synopsis
+
mu_echeck(class, expression)
+
Description
+
Check that the expression throws a specific exception class (or +subclass). Continue with the test case if fail.
+
Availability
+
C++ only
+
Example
+
+#include <stdexcept>
+
+extern "C"
+{
+    void mu_test(void)
+    {
+        mu_echeck(std::exception, true); /* fail */
+        mu_echeck(std::exception,
+                throw std::runtime_error("!")); /* excecuted, pass */
+    }
+}
+
+
+
+
+
+

6.4.   mu_eensure()

+
+
Synopsis
+
mu_eensure(class, expression)
+
Description
+
Check that the expression throws a specific exception class (or +subclass). Interrupt the test case if fail.
+
Availability
+
C++ only
+
Example
+
+#include <stdexcept>
+
+extern "C"
+{
+    void mu_test(void)
+    {
+        mu_eensure(std::exception, true); /* fail */
+        mu_echeck(std::exception,
+                throw std::runtime_error("!")); /* not excecuted */
+    }
+}
+
+
+
+
+
+
+

7.   About

+

This manual was written using reStructuredText.

+ + + + + +
+
+ + diff --git a/source/proj/mutest/releases/manual-1.0.pdf b/source/proj/mutest/releases/manual-1.0.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f28169b54044e7b534af0576636193bb261da273 GIT binary patch literal 143526 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∓gY+4(`o!p#;+rzJ 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 literal 0 HcmV?d00001 diff --git a/source/proj/mutest/releases/manual.html b/source/proj/mutest/releases/manual.html new file mode 120000 index 0000000..6658b45 --- /dev/null +++ b/source/proj/mutest/releases/manual.html @@ -0,0 +1 @@ +manual-1.0.html \ No newline at end of file diff --git a/source/proj/mutest/releases/manual.pdf b/source/proj/mutest/releases/manual.pdf new file mode 120000 index 0000000..a4a3038 --- /dev/null +++ b/source/proj/mutest/releases/manual.pdf @@ -0,0 +1 @@ +manual-1.0.pdf \ No newline at end of file diff --git a/source/proj/mutest/releases/mutest-1.0.tar.gz b/source/proj/mutest/releases/mutest-1.0.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..95a1c35cf1a237471a740b6948031a5650c7fd19 GIT binary patch literal 14409 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 LupJO4Fwp-1lypq1 literal 0 HcmV?d00001 diff --git a/source/proj/mutest/releases/mutest.tar.gz b/source/proj/mutest/releases/mutest.tar.gz new file mode 120000 index 0000000..a065ef5 --- /dev/null +++ b/source/proj/mutest/releases/mutest.tar.gz @@ -0,0 +1 @@ +mutest-1.0.tar.gz \ No newline at end of file -- 2.43.0