[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++;
}