Commits

Anonymous committed af07a85

Add the input_from_v1_string method.

Comments (0)

Files changed (4)

abc-path/Games-ABC_Path-Solver/Changes

 Revision history for Games-ABC_Path-Solver
 
+        - Add the input_from_v1_string class method to input from a version
+        1 string, so there will be a way to input from something besides
+        a file.
+
 0.0.3
         - Encapsulated scripts/abc-path-solve inside
         lib/Games/ABC_Path/Solver/App.pm .

abc-path/Games-ABC_Path-Solver/MANIFEST

 scripts/abc-path-solve
 scripts/bump-version-number.pl
 t/00-load.t
+t/input-from-string.t
 t/layouts/brain-bashers.2010-12-21.abc-path
 t/layouts/brain-bashers.2010-12-22.abc-path
 t/pod-coverage.t

abc-path/Games-ABC_Path-Solver/lib/Games/ABC_Path/Solver/Board.pm

     return [map { $_->_get_results_text_table() } @{$self->get_successful_layouts()}];
 }
 
-=head2 $board->input_from_file($filename)
+=head2 my $board = Games::ABC_Path::Solver::Board->input_from_file($filename)
 
 Inputs the board from the C<$filename> file path containing a representation
 of the initial board.
     return $self;
 }
 
+=head2 my $board = Games::ABC_Path::Solver::Board->input_from_v1_string($layout_string)
+
+This is a class method that inputs a version 1 string (as specified in 
+L<input_from_file> only without the opening magic line.)
+
+=cut
+
+sub input_from_v1_string
+{
+    my ($class, $layout_string) = @_;
+
+    my $self = $class->new;
+
+    $self->_input({ layout => $layout_string, version => 1});
+
+    return $self;
+}
+
 =head2 $board->get_moves()
 
 Returns the moves performed by the board. Each move is an

abc-path/Games-ABC_Path-Solver/t/input-from-string.t

+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use Test::More tests => 2;
+
+use Games::ABC_Path::Solver::Board;
+
+{
+    my $input_string = <<'EOF';
+OWXIBQN
+J    AK
+E     L
+U     F
+Y     P
+R     S
+TVMGCDH
+EOF
+
+    my $solver = Games::ABC_Path::Solver::Board->input_from_v1_string(
+        $input_string
+    );
+
+    # TEST
+    ok ($solver, "Solver was initialized.");
+
+    $solver->solve();
+
+    # TEST
+    is (scalar(@{$solver->get_successful_layouts()}), 1,
+        "One successful layout"
+    );
+}
+
+=head1 COPYRIGHT AND LICENSE
+
+Copyright (c) 2010 Shlomi Fish
+
+Permission is hereby granted, free of charge, to any person
+obtaining a copy of this software and associated documentation
+files (the "Software"), to deal in the Software without
+restriction, including without limitation the rights to use,
+copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the
+Software is furnished to do so, subject to the following
+conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+=cut
+
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.