[LON-CAPA-cvs] cvs: loncom /xml lontable.pm lontable.test
foxr
foxr@source.lon-capa.org
Tue, 02 Dec 2008 11:57:25 -0000
foxr Tue Dec 2 11:57:25 2008 EDT
Added files:
/loncom/xml lontable.test
Modified files:
/loncom/xml lontable.pm
Log:
- Start writing tests for lontable.
- Fix some errors in lontable that the tests written so far pointed out.
Index: loncom/xml/lontable.pm
diff -u loncom/xml/lontable.pm:1.3 loncom/xml/lontable.pm:1.4
--- loncom/xml/lontable.pm:1.3 Mon Dec 1 12:25:06 2008
+++ loncom/xml/lontable.pm Tue Dec 2 11:57:25 2008
@@ -1,7 +1,7 @@
# The LearningOnline Network with CAPA
# Generating TeX tables.
#
-# $Id: lontable.pm,v 1.3 2008/12/01 12:25:06 foxr Exp $
+# $Id: lontable.pm,v 1.4 2008/12/02 11:57:25 foxr Exp $
#
#
# Copyright Michigan State University Board of Trustees
@@ -320,18 +320,18 @@
=head3 Examples:
- my $cell_borders = $table->cell_border(); # ask if cell borders are requested.
+ my $cell_border = $table->cell_border(); # ask if cell borders are requested.
$table->cell_border(1); # Request cell borders.
=cut
-sub cell_borders {
+sub cell_border {
my ($self, $new_value) = @_;
if (defined($new_value)) {
$self->{inner_border} = $new_value;
}
- reurn $self->{inner_border};
+ return $self->{inner_border};
}
=pod
@@ -353,10 +353,10 @@
my ($self, $new_value) = @_;
if (defined($new_value)) {
- $self->catpion = $new_value;
+ $self->{caption} = $new_value;
}
- return $self->caption;
+ return $self->{caption};
}
=pod
@@ -378,9 +378,9 @@
my ($self, $new_value) = @_;
if (defined($new_value)) {
- $self->theme = $new_value;
+ $self->{theme} = $new_value;
}
- return $self->theme;
+ return $self->{theme};
}
=pod
@@ -414,8 +414,8 @@
sub start_row {
my ($self, %config) = @_;
- if ($self->row_open) {
- $self->end_row;
+ if ($self->{row_open}) {
+ $self->end_row();
}
my $row_hash = {
default_halign => "left",
@@ -434,7 +434,7 @@
my $rows = $self->{rows};
push(@$rows, $row_hash);
- $self->row_open = 1; # Row is now open and ready for business.
+ $self->{row_open} = 1; # Row is now open and ready for business.
}
=pod
@@ -445,15 +445,15 @@
=head3 Examples:
- $table->close_row();
+ $table->end_row();
=cut
-sub close_row {
+sub end_row {
my ($self) = @_;
- if ($self->row_open) {
+ if ($self->{row_open}) {
# Mostly we need to determine if this row has the maximum
# cell count of any row in existence in the table:
@@ -473,7 +473,7 @@
$self->{column_count} = $cell_count;
}
- $self->row_closed;
+ $self->{row_open} = 0;;
}
}
@@ -509,7 +509,7 @@
sub configure_row {
my ($self, $config) = @_;
- if (!$self->row_open) {
+ if (!$self->{row_open}) {
$self->start_row();
}
@@ -568,7 +568,7 @@
# If a row is not open, we must open it:
- if (!$self->row_open) {
+ if (!$self->{row_open}) {
$self->start_row();
}
@@ -613,8 +613,18 @@
push(@$current_cells, $cell);
}
+# The following method allows for testability.
+
+
+sub get_object_attribute {
+ my ($self, $attribute) = @_;
+ return $self->{$attribute};
+}
+
# Mandatory initialization.
+BEGIN{
+}
1;
__END__
Index: loncom/xml/lontable.test
+++ loncom/xml/lontable.test
#!/usr/bin/perl
# The LearningOnline Network with CAPA
# Generating TeX tables.
#
# $Id: lontable.test,v 1.1 2008/12/02 11:57:25 foxr Exp $
#
#
# Copyright Michigan State University Board of Trustees
#
# This file is part of the LearningOnline Network with CAPA (LON-CAPA).
#
# LON-CAPA is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# LON-CAPA is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with LON-CAPA; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# /home/httpd/html/adm/gpl.txt
#
# http://www.lon-capa.org/
## Copyright for TtHfunc and TtMfunc by Ian Hutchinson.
# TtHfunc and TtMfunc (the "Code") may be compiled and linked into
# binary executable programs or libraries distributed by the
# Michigan State University (the "Licensee"), but any binaries so
# distributed are hereby licensed only for use in the context
# of a program or computational system for which the Licensee is the
# primary author or distributor, and which performs substantial
# additional tasks beyond the translation of (La)TeX into HTML.
# The C source of the Code may not be distributed by the Licensee
# to any other parties under any circumstances.
#
# A TEST SUITE??? You've got to be kidding!!! LonCAPA don't have no
# TEST SUITEs!!!
#
# Well lontable does and this is it. The test suite ensures that
# the lontable.pm module is able to create the data structures it
# purports to create. The suite also ensures that the correct
# information is passed ot the LaTeX::Table class at generate
# time.
#
use strict;
use lontable;
use Test::More tests=>18;
#------------------- Default Construction tests: ---------------------------------
# Tests the getter forms of the configuration methods too:
my $testobject = new Apache::lontable();
ok(($testobject->alignment() eq 'left'), "Default Construction - Correct alignment");
ok(($testobject->table_border() == 0), "Default Construction - Correct table border");
ok(($testobject->cell_border() == 0), "Default Construction - Correct cell border");
ok(($testobject->caption() eq ''), "Default Construction - Correct caption");
ok(($testobject->theme() eq "Zurich"), "Default Construction - Correct theme");
ok(($testobject->get_object_attribute('column_count') == 0),
"Default Construction - zero columncount");
ok((!$testobject->get_object_attribute('row_open')),
"Default Construction - Row not open");
my $rows = $testobject->get_object_attribute('rows');
ok((scalar(@$rows) == 0), 'Default Construction - empty row array');
#--------------- Configured construction tests -----------------------------------
#
my $testobject = new Apache::lontable({alignment => 'right',
outer_border => 1,
inner_border => 1,
caption => 'Test caption',
theme => 'Houston'});
ok($testobject->alignment() eq 'right', 'Configured Construction - Correct alignment');
ok($testobject->table_border() == 1, 'Configured Construction - correct border');
ok($testobject->cell_border() == 1, 'Configured Construction - correct cell border');
ok($testobject->caption eq 'Test caption', 'Configured Construction - Correct caption');
ok($testobject->theme() eq 'Houston', 'Confiugred construction - correct theme');
#-------------- Test global configuration setters ----------------------------
# Each test starts with a fresh object:
# Table of methods to test...
my @configmethods = ('alignment', 'table_border', 'cell_border', 'caption', 'theme');
# Table of parameters for each method and expected results from the getter
my @values = ('center', '1', '1', "Testing", 'Miami');
my $i = 0;
foreach my $method (@configmethods) {
$testobject = new Apache::lontable();
$testobject->$method($values[$i]);
ok($testobject->$method() eq $values[$i], "Global Config: Testing $method as a setter");
$i++;
}