[libtest-bdd-cucumber-perl] 23/52: the first fully localized feature and step file
Intrigeri
intrigeri at moszumanska.debian.org
Thu Jun 19 10:18:34 UTC 2014
This is an automated email from the git hooks/post-receive script.
intrigeri pushed a commit to annotated tag 0.19
in repository libtest-bdd-cucumber-perl.
commit 255903aefae0ce821fabf62e1946bb9c41c03c0a
Author: glauschwuffel <glauschwuffel at nomaden.org>
Date: Mon May 26 21:52:22 2014 +0200
the first fully localized feature and step file
---
i18n/de/features/basic.feature | 75 ++++++++++++++++++
.../features/step_definitions/calculator_steps.pl | 91 ++++++++++++++++++++++
2 files changed, 166 insertions(+)
diff --git a/i18n/de/features/basic.feature b/i18n/de/features/basic.feature
new file mode 100644
index 0000000..4671fa0
--- /dev/null
+++ b/i18n/de/features/basic.feature
@@ -0,0 +1,75 @@
+# language: de
+Funktionalität: Grundlegende Taschenrechnerfunktionen
+ Um sicherzustellen, dass ich die Calculator-Klasse korrekt programmiert habe,
+ möchte ich als Entwickler einige grundlegende Funktionen prüfen,
+ damit ich beruhigt meine Calculator-Klasse verwenden kann.
+
+ Szenario: Anzeige des ersten Tastendrucks
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn ich 1 gedrückt habe
+ Dann ist auf der Anzeige 1 zu sehen
+
+ Szenario: Anzeige mehrerer Tastendrücke
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn ich 1 und 2 und 3 und . und 5 und 0 gedrückt habe
+ Dann ist auf der Anzeige 123.50 zu sehen
+
+ Szenario: Taste "C" löscht die Anzeige
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn ich 1 und 2 und 3 gedrückt habe
+ Wenn ich C gedrückt habe
+ Dann ist auf der Anzeige 0 zu sehen
+
+ Szenario: Addition während des Rechnens
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn ich 1 und 2 und 3 und + und 4 und 5 und 6 und + gedrückt habe
+ Dann ist auf der Anzeige 579 zu sehen
+
+ Szenario: Grundlegende Berechnungen
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn die Tasten <first> gedrückt wurden
+ Und die Tasten <operator> gedrückt wurden
+ Und die Tasten <second> gedrückt wurden
+ Und ich = gedrückt habe
+ Dann ist auf der Anzeige <result> zu sehen
+ Beispiele:
+ | first | operator | second | result |
+ | 5.0 | + | 5.0 | 10 |
+ | 6 | / | 3 | 2 |
+ | 10 | * | 7.550 | 75.5 |
+ | 3 | - | 10 | -7 |
+
+ Szenario: Trennung von Berechnungen
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn ich erfolgreich folgende Rechnungen durchgeführt habe
+ | first | operator | second | result |
+ | 0.5 | + | 0.1 | 0.6 |
+ | 0.01 | / | 0.01 | 1 |
+ | 10 | * | 1 | 10 |
+ Und ich 3 gedrückt habe
+ Dann ist auf der Anzeige 3 zu sehen
+
+ Szenario: Ticker Tape
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn ich folgende Zeichenfolge eingegeben habe
+ """
+ 1 + 2 + 3 + 4 + 5 + 6 -
+ 100
+ * 13 \=\=\= + 2 =
+ """
+ Dann ist auf der Anzeige -1025 zu sehen
+
+ Szenario: Zahlen als Text eingeben
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn die Tasten __THE_NUMBER_FIVE__ gedrückt wurden
+ Dann ist auf der Anzeige 5 zu sehen
+
+ Szenario: Zahlen als Text eingeben
+ Gegeben sei ein neues Objekt der Klasse Calculator
+ Wenn ich folgende Zahlen addiert habe
+ | number as word |
+ | __THE_NUMBER_FOUR__ |
+ | __THE_NUMBER_FIVE__ |
+ | __THE_NUMBER_ONE__ |
+ Dann ist auf der Anzeige __THE_NUMBER_TEN__ zu sehen
+
diff --git a/i18n/de/features/step_definitions/calculator_steps.pl b/i18n/de/features/step_definitions/calculator_steps.pl
new file mode 100644
index 0000000..621b5a2
--- /dev/null
+++ b/i18n/de/features/step_definitions/calculator_steps.pl
@@ -0,0 +1,91 @@
+#!perl
+
+use strict;
+use warnings;
+
+use Test::More;
+use Test::BDD::Cucumber::StepFile;
+
+use lib 'examples/calculator/lib/';
+
+Before sub {
+ use_ok( 'Calculator' );
+};
+
+After sub {
+ # a bit contrived, as garbage collection would clear it out
+ delete S->{'Calculator'};
+ ok( not exists S->{'Calculator'} );
+};
+
+my %numbers_as_words = (
+ __THE_NUMBER_ONE__ => 1,
+ __THE_NUMBER_FOUR__ => 4,
+ __THE_NUMBER_FIVE__ => 5,
+ __THE_NUMBER_TEN__ => 10,
+);
+
+sub map_word_to_number {
+ my $word = shift;
+
+ ok( $word );
+ ok( exists $numbers_as_words{ $word } );
+
+ return $numbers_as_words{ $word };
+}
+
+Transform qr/^(__THE_NUMBER_\w+__)$/, sub { map_word_to_number( $1 ) };
+
+Transform qr/^table:number as word$/, sub {
+ my ($c, $data)=@_;
+
+ for my $row ( @{ $data } ) {
+ $row->{'number'} = map_word_to_number( $row->{'number as word'} );
+ }
+};
+
+Gegebensei 'ein neues Objekt der Klasse Calculator', sub {
+ S->{'Calculator'} = Calculator->new()
+};
+
+Wenn qr/^ich (.+) gedrückt habe/, sub {
+ S->{'Calculator'}->press( $_ ) for split(/(,| und) /, $1);
+};
+
+Wenn qr/^die Tasten (.+) gedrückt wurden/, sub {
+ # Make this call the having pressed
+ my ( $value ) = @{ C->matches };
+ S->{'Calculator'}->key_in( $value );
+};
+
+Wenn 'ich erfolgreich folgende Rechnungen durchgeführt habe', sub {
+ my $calculator = S->{'Calculator'};
+
+ for my $row ( @{ C->data } ) {
+ $calculator->key_in( $row->{'first'} );
+ $calculator->key_in( $row->{'operator'} );
+ $calculator->key_in( $row->{'second'} );
+ $calculator->press( '=' );
+
+ is( $calculator->display,
+ $row->{'result'},
+ $row->{'first'} .' '. $row->{'operator'} .' '. $row->{'second'} );
+ }
+};
+
+Wenn 'ich folgende Zeichenfolge eingegeben habe', sub {
+ S->{'Calculator'}->key_in( C->data );
+};
+
+Wenn 'ich folgende Zahlen addiert habe', sub {
+ for my $row ( @{ C->data } ) {
+ S->{'Calculator'}->key_in( $row->{number} );
+ S->{'Calculator'}->key_in( '+' );
+ }
+};
+
+Dann qr/^ist auf der Anzeige (.+) zu sehen/, sub {
+ my ( $value ) = @{ C->matches };
+ is( S->{'Calculator'}->display, $value,
+ "Calculator display as expected" );
+};
--
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-perl/packages/libtest-bdd-cucumber-perl.git
More information about the Pkg-perl-cvs-commits
mailing list