# Copyright (c) 2002-2005 Cunningham & Cunningham, Inc. # Released under the terms of the GNU General Public License version 2 or later. # # Perl translation by Tony Byrne package Test::C2FIT::fat::FixtureNameFixture; use base 'Test::C2FIT::ColumnFixture'; use strict; use Error qw( :try ); use Test::C2FIT::Parse; use Test::C2FIT::Fixture; sub FixtureName { my $self = shift; my $tableParse = $self->GenerateTableParse($self->{'Table'}); my $result = $self->fixtureName($tableParse)->text(); return "(missing)" if ($result eq ""); return $result; } sub GenerateTableParse { my $self = shift; my $table = shift; my @rows = split(/\n/, $table); return Test::C2FIT::Parse->from("table", undef, $self->GenerateRowParses(\@rows, 0), undef); } sub GenerateRowParses { my $self = shift; my ($rows, $rowIndex) = @_; return if ($rowIndex >= scalar @$rows); my @cells = split (/\]\s*\[/, $rows->[$rowIndex]); if (scalar @cells > 0) { $cells[0] =~ s/^\[//g; my $lastCell = (scalar @cells) - 1; $cells[$lastCell] =~ s/\]$//g; } return Test::C2FIT::Parse->from("tr", undef, $self->GenerateCellParses(\@cells, 0), $self->GenerateRowParses($rows, $rowIndex + 1)); } sub GenerateCellParses { my $self = shift; my ($cells, $cellIndex) = @_; return if ($cellIndex >= scalar @$cells); return Test::C2FIT::Parse->from("td", $cells->[$cellIndex], undef, $self->GenerateCellParses($cells, $cellIndex + 1)); } 1; __END__ package fat; import java.text.ParseException; import fit.*; public class FixtureNameFixture extends ColumnFixture { public String Table; public String FixtureName() throws Exception { Parse tableParse = GenerateTableParse(Table); String result = fixtureName(tableParse).text(); if (result.equals("")) return "(missing)"; return result; } private Parse GenerateTableParse(String table) throws ParseException { String[] rows = table.split("\n"); return new Parse("table", null, GenerateRowParses(rows, 0), null); } private Parse GenerateRowParses(String[] rows, int rowIndex) { if (rowIndex >= rows.length) return null; String[] cells = rows[rowIndex].split("\\]\\s*\\["); if (cells.length != 0) { cells[0] = cells[0].substring(1); // strip beginning '[' int lastCell = cells.length - 1; cells[lastCell] = cells[lastCell].replaceAll("\\]$", ""); // strip ending ']' } return new Parse("tr", null, GenerateCellParses(cells, 0), GenerateRowParses(rows, rowIndex+1)); } private Parse GenerateCellParses(String[] cells, int cellIndex) { if (cellIndex >= cells.length) return null; return new Parse("td", cells[cellIndex], null, GenerateCellParses(cells, cellIndex + 1)); } }