Skip to content

Commit

Permalink
Unit test coverage (if somewhat fragile)
Browse files Browse the repository at this point in the history
  • Loading branch information
CloCkWeRX committed Oct 4, 2010
1 parent 7eb3312 commit 57c159b
Show file tree
Hide file tree
Showing 6 changed files with 3,820 additions and 83 deletions.
2 changes: 1 addition & 1 deletion Science/Chemistry.php
Expand Up @@ -24,7 +24,7 @@
/**
* Package version constant
*/
define (SCIENCE_CHEMISTRY_VERSION, '1.0');
define("SCIENCE_CHEMISTRY_VERSION", '1.0');

require_once "Science/Chemistry/Element.php";
require_once "Science/Chemistry/Periodic_Table.php";
Expand Down
11 changes: 8 additions & 3 deletions Science/Chemistry/Macromolecule.php
Expand Up @@ -88,11 +88,16 @@ function Science_Chemistry_Macromolecule($name, $molecules="") {
* @see addMolecule()
*/
function initMacromolecule($molecules) {
if (!is_array)
if (!is_array($molecules)) {
return false;
for ($i=0; $i < count($molecules); $i++)
if(!$this->addMolecule($molecules[$i]))
}

for ($i=0; $i < count($molecules); $i++) {
if (!$this->addMolecule($molecules[$i])) {
return false;
}
}

return true;
}

Expand Down
195 changes: 195 additions & 0 deletions tests/Science_ChemistryTest.php
@@ -0,0 +1,195 @@
<?php
require_once "PHPUnit/Framework.php";
require_once "Science/Chemistry.php";
require_once "Science/Chemistry/Molecule_XYZ.php";
require_once "Science/Chemistry/Macromolecule.php";

class Science_ChemistryTest extends PHPUnit_Framework_TestCase {

public function test() {
ob_start();
?>
Creating and printing an atom
N 2.3000 4.5000 -2.1000
Creating a second atom and calculating distance to first one
C 1.2000 3.4000 -1.6000

Distance N to C: 1.6340 Angstroms

=====
Reading a molecule:
$m is a molecule: 1
10
his.xyz -20.000000
N 11.6200 -9.7070 11.6430
C 12.6170 -8.7040 12.0260
C 12.1040 -7.3050 12.2730
O 12.9290 -6.4050 12.5540
C 13.7340 -8.5610 10.9240
C 14.5460 -9.8200 10.8390
N 14.2870 -10.8480 9.9840
C 15.6250 -10.1840 11.5690
C 15.1760 -11.8080 10.1800
N 16.0140 -11.4260 11.1350
# Number of molecules: 2
# Molecule 1
10
his.xyz -20.000000
N 11.6200 -9.7070 11.6430
C 12.6170 -8.7040 12.0260
C 12.1040 -7.3050 12.2730
O 12.9290 -6.4050 12.5540
C 13.7340 -8.5610 10.9240
C 14.5460 -9.8200 10.8390
N 14.2870 -10.8480 9.9840
C 15.6250 -10.1840 11.5690
C 15.1760 -11.8080 10.1800
N 16.0140 -11.4260 11.1350

# Molecule 2
8
lys.xyz 0.000000
C 10.2020 -11.6530 11.9550
C 11.1880 -10.6400 12.4740
O 11.5620 -10.7470 13.6630
C 10.9750 -12.7980 11.2490
C 11.9300 -13.5300 12.2100
C 11.1470 -14.0260 13.4150
C 11.9850 -14.8510 14.3760
N 11.1060 -15.3590 15.4740

<molecule title="biggie" id="big">
<list title="molecules">
<molecule title="his.xyz" id="1">
<string title="name">his.xyz</string>
<list title="atoms">
<atom title="atom" id="1">
<string title="name">N</string>
<coordinate3 builtin="xyz3">11.6200 -9.7070 11.6430</coordinate3>
</atom>
<atom title="atom" id="2">
<string title="name">C</string>
<coordinate3 builtin="xyz3">12.6170 -8.7040 12.0260</coordinate3>
</atom>
<atom title="atom" id="3">
<string title="name">C</string>
<coordinate3 builtin="xyz3">12.1040 -7.3050 12.2730</coordinate3>
</atom>
<atom title="atom" id="4">
<string title="name">O</string>
<coordinate3 builtin="xyz3">12.9290 -6.4050 12.5540</coordinate3>
</atom>
<atom title="atom" id="5">
<string title="name">C</string>
<coordinate3 builtin="xyz3">13.7340 -8.5610 10.9240</coordinate3>
</atom>
<atom title="atom" id="6">
<string title="name">C</string>
<coordinate3 builtin="xyz3">14.5460 -9.8200 10.8390</coordinate3>
</atom>
<atom title="atom" id="7">
<string title="name">N</string>
<coordinate3 builtin="xyz3">14.2870 -10.8480 9.9840</coordinate3>
</atom>
<atom title="atom" id="8">
<string title="name">C</string>
<coordinate3 builtin="xyz3">15.6250 -10.1840 11.5690</coordinate3>
</atom>
<atom title="atom" id="9">
<string title="name">C</string>
<coordinate3 builtin="xyz3">15.1760 -11.8080 10.1800</coordinate3>
</atom>
<atom title="atom" id="10">
<string title="name">N</string>
<coordinate3 builtin="xyz3">16.0140 -11.4260 11.1350</coordinate3>
</atom>
</list>
<list title="connections">
<list title="connect" id="1">2</list>
<list title="connect" id="2">3 5</list>
<list title="connect" id="3">4</list>
<list title="connect" id="5">6</list>
<list title="connect" id="6">7 8</list>
<list title="connect" id="7">9</list>
<list title="connect" id="8">10</list>
<list title="connect" id="9">10</list>
</list>
</molecule>
<molecule title="lys.xyz" id="2">
<string title="name">lys.xyz</string>
<list title="atoms">
<atom title="atom" id="1">
<string title="name">C</string>
<coordinate3 builtin="xyz3">10.2020 -11.6530 11.9550</coordinate3>
</atom>
<atom title="atom" id="2">
<string title="name">C</string>
<coordinate3 builtin="xyz3">11.1880 -10.6400 12.4740</coordinate3>
</atom>
<atom title="atom" id="3">
<string title="name">O</string>
<coordinate3 builtin="xyz3">11.5620 -10.7470 13.6630</coordinate3>
</atom>
<atom title="atom" id="4">
<string title="name">C</string>
<coordinate3 builtin="xyz3">10.9750 -12.7980 11.2490</coordinate3>
</atom>
<atom title="atom" id="5">
<string title="name">C</string>
<coordinate3 builtin="xyz3">11.9300 -13.5300 12.2100</coordinate3>
</atom>
<atom title="atom" id="6">
<string title="name">C</string>
<coordinate3 builtin="xyz3">11.1470 -14.0260 13.4150</coordinate3>
</atom>
<atom title="atom" id="7">
<string title="name">C</string>
<coordinate3 builtin="xyz3">11.9850 -14.8510 14.3760</coordinate3>
</atom>
<atom title="atom" id="8">
<string title="name">N</string>
<coordinate3 builtin="xyz3">11.1060 -15.3590 15.4740</coordinate3>
</atom>
</list>
<list title="connections">
<list title="connect" id="1">2 4</list>
<list title="connect" id="2">3</list>
<list title="connect" id="4">5</list>
<list title="connect" id="5">6</list>
<list title="connect" id="6">7</list>
<list title="connect" id="7">8</list>
</list>
</molecule>
</list>
</molecule>
<?php
$expected = ob_get_clean();

ob_start();
echo "Creating and printing an atom\n";
$a = new Science_Chemistry_Atom("N", array(2.3,4.5,-2.1));
echo $a->toString()."\n";
echo "Creating a second atom and calculating distance to first one\n";
$b = new Science_Chemistry_Atom("C", array(1.2,3.4,-1.6));
echo $b->toString()."\n";
echo "\nDistance N to C: ".sprintf("%.4f", $a->distance($b))." Angstroms\n";

echo "\n=====\nReading a molecule:\n";
$m = new Science_Chemistry_Molecule_XYZ(dirname(__FILE__) . "/his.xyz");
echo "\$m is a molecule: ".(int)Science_Chemistry_Molecule::isMolecule($m)."\n";
echo $m->toString();

$n = new Science_Chemistry_Molecule_XYZ(dirname(__FILE__) . "/lys.xyz");

$mols = array($m, $n);

$big = new Science_Chemistry_Macromolecule("big one", $mols);

echo $big->toString();
echo $big->toCML("biggie", "big", true);
$result = ob_get_clean();

$this->assertSame($expected, $result);
}
}

0 comments on commit 57c159b

Please sign in to comment.