File:  [LON-CAPA] / loncom / xml / lontable.test
Revision 1.1: download - view: text, annotated - select for diffs
Tue Dec 2 11:57:25 2008 UTC (15 years, 5 months ago) by foxr
Branches: MAIN
CVS tags: HEAD
- Start writing tests for lontable.
- Fix some errors in lontable that the tests written so far pointed out.

#!/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++;
}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>