[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