fit 1.1 → 1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +27 -0
- data/{README.txt → README.rdoc} +28 -9
- data/Rakefile +44 -4
- data/bin/fit +29 -3
- data/doc/book/TestChatServer.html +207 -0
- data/doc/book/TestDiscount.html +178 -0
- data/doc/book/TestDiscountGroup.html +223 -0
- data/doc/book/TestDiscountMoney.html +179 -0
- data/doc/book/TestLateHours.html +245 -0
- data/doc/bugs/ColumnFixtureFollowedByActionFixture.html +316 -0
- data/doc/examples/MusicExampleWithErrors.html +1 -1
- data/doc/spec/annotation.html +3634 -3833
- data/doc/spec/index.html +1043 -947
- data/doc/spec/parse-windows-1252.html +3806 -0
- data/doc/spec/parse.html +3806 -3094
- data/doc/spec/ui.html +1537 -0
- data/lib/eg/all_files.rb +1 -1
- data/lib/eg/book/calculate_discount.rb +25 -0
- data/lib/eg/book/calculate_discount_money.rb +60 -0
- data/lib/eg/book/chat_server_actions.rb +85 -0
- data/lib/eg/book/discount_group_ordered_list.rb +59 -0
- data/lib/eg/book/rent/calculate_late_hours.rb +35 -0
- data/lib/eg/column_index.rb +4 -3
- data/lib/eg/music/display.rb +4 -2
- data/lib/eg/music/music.rb +4 -2
- data/lib/fat/command_line_fixture.rb +33 -0
- data/lib/fat/html_to_text_fixture.rb +3 -3
- data/lib/fit/column_fixture.rb +11 -7
- data/lib/fit/file_runner.rb +65 -10
- data/lib/fit/fixture.rb +10 -4
- data/lib/fit/fixture_loader.rb +29 -19
- data/lib/fit/parse.rb +46 -12
- data/lib/fit/type_adapter.rb +8 -3
- data/lib/fit/version.rb +26 -0
- data/lib/fitlibrary/comment_fixture.rb +12 -0
- data/lib/fitlibrary/spec/specify_fixture.rb +154 -0
- data/lib/fitlibrary/specify/column_fixture_under_test.rb +17 -0
- data/lib/fitlibrary/specify/column_fixture_under_test_with_args.rb +17 -0
- data/lib/fittask.rb +43 -47
- data/test/all_tests.rb +2 -1
- data/test/column_fixture_test.rb +26 -0
- data/test/file_runner_test.rb +2 -7
- data/test/fixture_loader_test.rb +16 -3
- data/test/parse_test.rb +18 -3
- data/test/type_adapter_test.rb +58 -44
- metadata +180 -156
data/CHANGELOG
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
1.2
|
2
|
+
|
3
|
+
* Support Ruby 1.9.
|
4
|
+
* Explicitly force Dir.glob order to avoid inconsistencies on Ruby 1.8.7.
|
5
|
+
* Compliance with Fit 1.2 specification (both mandatory and recommended):
|
6
|
+
* support numeric entities in HTML files;
|
7
|
+
* provide an --encoding option on the command line to set the character
|
8
|
+
encoding used for reading input and writing output files;
|
9
|
+
* provide --version and --help command line options.
|
10
|
+
* Support character encoding also from within Rake::FitTask.
|
11
|
+
* Better error messages on the command line when input/output files are not
|
12
|
+
found/given.
|
13
|
+
* Speed up the process of loading fixtures in Fit::FixtureLoader.
|
14
|
+
* Report every exception within Fitnesse. (RubyForge patch #5100)
|
15
|
+
* Multiple fixtures executed on the same HTML file now use a single loader.
|
16
|
+
(RubyForge bug #14379)
|
17
|
+
* Distribution now includes examples from the Fit book.
|
18
|
+
* Better integer parsing in Fit::GenericAdapter. (RubyForge bug #25897)
|
19
|
+
* Better float parsing in Fit::GenericAdapter. (RubyForge bug #25640)
|
20
|
+
* Load class AFixture even when class A exists.
|
21
|
+
* Avoid extra whitespace when converting HTML table header text to Ruby
|
22
|
+
method names. (RubyForge bug #22283)
|
23
|
+
* Use the canonical string representation for arrays.
|
24
|
+
|
25
|
+
1.1
|
26
|
+
|
27
|
+
* Initial release, compliant with Fit 1.1 specification.
|
data/{README.txt → README.rdoc}
RENAMED
@@ -6,13 +6,13 @@ http://fit.rubyforge.org for further information.
|
|
6
6
|
|
7
7
|
Author:: Giulio Piancastelli <giulio.piancastelli@gmail.com>
|
8
8
|
Requires:: Ruby 1.8 or later
|
9
|
-
License:: RubyFIT is Copyright 2004-
|
9
|
+
License:: RubyFIT is Copyright 2004-2009 by Giulio Piancastelli.
|
10
10
|
FIT is Copyright 2002 by Cunningham & Cunningham, Inc.
|
11
11
|
Both FIT and RubyFIT are released under the terms of the GNU
|
12
12
|
General Public License version 2 or later.
|
13
13
|
|
14
14
|
Document created on Saturday 11th December, 2004.
|
15
|
-
Last revised on
|
15
|
+
Last revised on Wednesday 14th October, 2009.
|
16
16
|
|
17
17
|
== Quick Start
|
18
18
|
|
@@ -25,7 +25,7 @@ the installation of RubyFIT as a gem on your system. (See RubyGems at
|
|
25
25
|
http://rubygems.rubyforge.org and its documentation for details on how
|
26
26
|
to do it.) When RubyFIT is installed, you still can run unit tests just
|
27
27
|
by moving into its installation directory in the Ruby environment (e.g.
|
28
|
-
<tt>$RUBY_HOME/lib/ruby/gems/1.8/gems/fit-1.
|
28
|
+
<tt>$RUBY_HOME/lib/ruby/gems/1.8/gems/fit-1.2/</tt>) and typing +rake+
|
29
29
|
at the Terminal or Command Prompt in that directory, which contains
|
30
30
|
RubyFIT's Rakefile. If you don't have Rake installed, you can still
|
31
31
|
manually run tests by executing the <tt>test/all_tests.rb</tt> script.
|
@@ -40,7 +40,7 @@ Typing <tt>rake fit_report</tt> instead will also have the effect of
|
|
40
40
|
generating reports for those tests, so that you can see green, red,
|
41
41
|
yellow and gray cells with your own eyes.
|
42
42
|
|
43
|
-
The specification for FIT 1.
|
43
|
+
The specification for FIT 1.2 compliant implementations is also
|
44
44
|
included, in the <tt>doc/spec</tt> directory. Running
|
45
45
|
<tt>rake fitspec</tt> or <tt>rake fitspec_report</tt> will have the
|
46
46
|
same effects described above in the context of RubyFIT's examples.
|
@@ -64,9 +64,26 @@ Terminal or Console prompt are made available at any file system
|
|
64
64
|
location.
|
65
65
|
|
66
66
|
You can invoke the +fit+ script passing two arguments: the first is the
|
67
|
-
HTML file containing tables to be tested, the second
|
68
|
-
HTML file which will be created by RubyFIT and
|
69
|
-
of the tests.
|
67
|
+
name of the input HTML file containing tables to be tested, the second
|
68
|
+
is the name of the output HTML file which will be created by RubyFIT and
|
69
|
+
will contain the results of the tests.
|
70
|
+
|
71
|
+
As of version 1.2, the command-line script supports an <tt>--encoding</tt>
|
72
|
+
option, used to indicate the encoding of the input and output files.
|
73
|
+
Internally, RubyFIT uses UTF-8 as the default encoding to substitute
|
74
|
+
characters such as non-breaking spaces and typographic quotes. This means
|
75
|
+
that, if your HTML files are already encoded in UTF-8, you don't need to
|
76
|
+
pass the <tt>--encoding</tt> option on the command line; otherwise, you
|
77
|
+
may need to supply the proper character encoding in order to have the
|
78
|
+
script correctly recognize and produce HTML code.
|
79
|
+
|
80
|
+
As an example, the <tt>doc/spec</tt> directory contains two files for the
|
81
|
+
parsing Fit specification, each with a different encoding. The first file is
|
82
|
+
named <tt>parse.html</tt> and is encoded in UTF-8; this is the file that is
|
83
|
+
run by the <tt>rake fitspec</tt> command. The second file is named
|
84
|
+
<tt>parse-windows-1252.html</tt> and is encoded in windows-1252. When fed
|
85
|
+
to the +fit+ script on the command line, the tests in this file pass only
|
86
|
+
if the proper <tt>--encoding=windows-1252</tt> option is supplied.
|
70
87
|
|
71
88
|
=== RubyFIT from a web server
|
72
89
|
|
@@ -106,7 +123,7 @@ within Fitnesse. After installing RubyFIT as a gem in your Ruby
|
|
106
123
|
environment, you can reference the <tt>FitServer.rb</tt> script in
|
107
124
|
Fitnesse from the location of the installed gem. For instance you can
|
108
125
|
set the latest parameter defining the command pattern to the string
|
109
|
-
<tt>/usr/lib/ruby/gems/1.8/gems/fit-1.
|
126
|
+
<tt>/usr/lib/ruby/gems/1.8/gems/fit-1.2/bin/FitServer.rb</tt> for some
|
110
127
|
Linux flavors.
|
111
128
|
|
112
129
|
== RubyFIT Development Issues
|
@@ -128,7 +145,7 @@ difference is retained. A workaround in Fit::ScientificDouble has been
|
|
128
145
|
implemented, so that if the precision is exactly zero, the values of
|
129
146
|
two comparing objects must be equals in a 1.0e-5 delta.
|
130
147
|
|
131
|
-
Note
|
148
|
+
Note that in <tt>AllCombinations.html</tt> Ruby does even
|
132
149
|
ScientificDouble with much more precision than the Java version. So,
|
133
150
|
another workaround in <tt>==</tt> and <tt><=></tt> had to be employed,
|
134
151
|
specifically to create another ScientificDouble to compare with and to
|
@@ -196,6 +213,8 @@ Other developers have contributed code to the project:
|
|
196
213
|
- Jim Hughes
|
197
214
|
- Brian Marick
|
198
215
|
- Bret Pettichord
|
216
|
+
- Jari Bakken
|
217
|
+
- Zhon Johansen
|
199
218
|
|
200
219
|
=== Special Thanks
|
201
220
|
|
data/Rakefile
CHANGED
@@ -53,14 +53,46 @@ Rake::FitTask.new(:fit) do |t|
|
|
53
53
|
|
54
54
|
end
|
55
55
|
|
56
|
+
# desc 'Run tests from the book "Fit for developing software" by R.Mugridge & W.Cunningham'
|
57
|
+
Rake::FitTask.new(:fitbook) do |t|
|
58
|
+
# Examples from the book "Fit for developing software" by R.Mugridge & W.Cunningham
|
59
|
+
t.create_test_suite do |suite|
|
60
|
+
tests = []
|
61
|
+
tests << { :name => 'TestDiscount',
|
62
|
+
:right => 7, :wrong => 1, :ignores => 0, :exceptions => 0 }
|
63
|
+
tests << { :name => 'TestDiscountMoney',
|
64
|
+
:right => 7, :wrong => 1, :ignores => 0, :exceptions => 0 }
|
65
|
+
tests << { :name => 'TestChatServer' }
|
66
|
+
tests << { :name => 'TestDiscountGroup' }
|
67
|
+
tests << { :name => 'TestLateHours' }
|
68
|
+
suite.test_path = "doc/book/"
|
69
|
+
suite.report_path = "doc/book/"
|
70
|
+
suite.tests = tests
|
71
|
+
|
72
|
+
CLOBBER.include(suite.report_path + "Report_*.html")
|
73
|
+
CLOBBER.include(suite.report_path + "footnotes/")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
Rake::FitTask.new(:fitbugs) do |t|
|
78
|
+
t.create_test_suite do |suite|
|
79
|
+
suite.test_path = "doc/bugs/"
|
80
|
+
suite.report_path = "doc/bugs/"
|
81
|
+
suite << { :name => 'ColumnFixtureFollowedByActionFixture',
|
82
|
+
:right => 8, :wrong => 1, :ignores => 0, :exceptions => 0 }
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
56
86
|
Rake::FitTask.new(:fitspec) do |t|
|
57
87
|
t.create_test_suite do |suite|
|
58
88
|
suite.test_path = "doc/spec/"
|
59
89
|
suite.report_path = "doc/spec/"
|
60
90
|
suite << { :name => 'parse',
|
61
|
-
:right =>
|
91
|
+
:right => 83, :wrong => 0, :ignores => 0, :exceptions => 0 }
|
62
92
|
suite << { :name => 'annotation',
|
63
93
|
:right => 47, :wrong => 0, :ignores => 0, :exceptions => 0 }
|
94
|
+
suite << { :name => 'ui',
|
95
|
+
:right => 30, :wrong => 0, :ignores => 0, :exceptions => 0 }
|
64
96
|
end
|
65
97
|
end
|
66
98
|
|
@@ -80,9 +112,11 @@ end
|
|
80
112
|
|
81
113
|
require 'rake/gempackagetask'
|
82
114
|
|
115
|
+
require 'fit/version'
|
116
|
+
|
83
117
|
spec = Gem::Specification.new do |s|
|
84
118
|
s.name = 'fit'
|
85
|
-
s.version =
|
119
|
+
s.version = Fit::VERSION
|
86
120
|
s.author = 'Giulio Piancastelli'
|
87
121
|
# See the README for other authors/developers/contributors
|
88
122
|
s.email = 'giulio.piancastelli@gmail.com'
|
@@ -90,7 +124,13 @@ spec = Gem::Specification.new do |s|
|
|
90
124
|
s.rubyforge_project = 'fit'
|
91
125
|
s.platform = Gem::Platform::RUBY
|
92
126
|
s.summary = 'A Ruby port of FIT (Framework for Integrated Testing)'
|
93
|
-
s.
|
127
|
+
s.description = <<EOF_DESCRIPTION
|
128
|
+
RubyFIT is a tool for enhancing communication and collaboration in
|
129
|
+
software development. It allows customers, testers, and programmers
|
130
|
+
to learn what their software should do and what it does do, by
|
131
|
+
automatically comparing customers' expectations to actual results.
|
132
|
+
EOF_DESCRIPTION
|
133
|
+
s.files = FileList["{bin,lib,test,doc}/**/*"].to_a + ["Rakefile", "CHANGELOG"]
|
94
134
|
s.require_path = 'lib'
|
95
135
|
# s.autorequire something?
|
96
136
|
# set for executable scripts in the bin/ subdirectory
|
@@ -98,7 +138,7 @@ spec = Gem::Specification.new do |s|
|
|
98
138
|
s.executables << 'fit'
|
99
139
|
s.test_file = 'test/all_tests.rb'
|
100
140
|
s.has_rdoc = false # no RDoc comments in the code
|
101
|
-
s.extra_rdoc_files = ["README.
|
141
|
+
s.extra_rdoc_files = ["README.rdoc"]
|
102
142
|
# no external dependencies on other gems
|
103
143
|
end
|
104
144
|
|
data/bin/fit
CHANGED
@@ -1,10 +1,36 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
1
2
|
$:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
|
2
3
|
|
3
|
-
require 'fit/parse'
|
4
4
|
require 'fit/file_runner'
|
5
|
+
require 'fit/parse'
|
6
|
+
require 'fit/version'
|
7
|
+
|
8
|
+
require 'optparse'
|
9
|
+
|
10
|
+
options = {}
|
11
|
+
|
12
|
+
option_parser = OptionParser.new
|
13
|
+
option_parser.on("-v", "--version") do
|
14
|
+
puts Fit::VERSION_BLURB
|
15
|
+
exit 0
|
16
|
+
end
|
17
|
+
option_parser.on("-h", "--help") do
|
18
|
+
puts Fit::HELP_BLURB
|
19
|
+
exit 0
|
20
|
+
end
|
21
|
+
option_parser.on("-eENC", "--encoding=ENC", String) do |enc|
|
22
|
+
options[:encoding] = enc
|
23
|
+
end
|
24
|
+
|
25
|
+
begin
|
26
|
+
args = option_parser.parse(ARGV)
|
27
|
+
rescue OptionParser::InvalidOption => invalid
|
28
|
+
puts "#{File.basename($0)}: #{invalid.message}"
|
29
|
+
exit -1
|
30
|
+
end
|
5
31
|
|
6
|
-
report =
|
32
|
+
report = args[1]
|
7
33
|
unless report.nil?
|
8
34
|
Fit::Parse.footnote_path = File.dirname(report) + File::SEPARATOR
|
9
35
|
end
|
10
|
-
Fit::FileRunner.new.run
|
36
|
+
Fit::FileRunner.new.run(args, options.empty? ? nil : options)
|
@@ -0,0 +1,207 @@
|
|
1
|
+
<html xmlns:o="urn:schemas-microsoft-com:office:office"
|
2
|
+
xmlns:w="urn:schemas-microsoft-com:office:word"
|
3
|
+
xmlns="http://www.w3.org/TR/REC-html40">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
|
7
|
+
<meta name=ProgId content=Word.Document>
|
8
|
+
<meta name=Generator content="Microsoft Word 11">
|
9
|
+
<meta name=Originator content="Microsoft Word 11">
|
10
|
+
<link rel=File-List href="TestChatServer_file/filelist.xml">
|
11
|
+
<title>ChatServerActions</title>
|
12
|
+
<!--[if gte mso 9]><xml>
|
13
|
+
<w:WordDocument>
|
14
|
+
<w:GrammarState>Clean</w:GrammarState>
|
15
|
+
<w:HyphenationZone>14</w:HyphenationZone>
|
16
|
+
<w:ValidateAgainstSchemas/>
|
17
|
+
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
|
18
|
+
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
|
19
|
+
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
|
20
|
+
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
|
21
|
+
</w:WordDocument>
|
22
|
+
</xml><![endif]--><!--[if gte mso 9]><xml>
|
23
|
+
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
|
24
|
+
</w:LatentStyles>
|
25
|
+
</xml><![endif]-->
|
26
|
+
<style>
|
27
|
+
<!--
|
28
|
+
/* Style Definitions */
|
29
|
+
p.MsoNormal, li.MsoNormal, div.MsoNormal
|
30
|
+
{mso-style-parent:"";
|
31
|
+
margin:0cm;
|
32
|
+
margin-bottom:.0001pt;
|
33
|
+
mso-pagination:widow-orphan;
|
34
|
+
font-size:12.0pt;
|
35
|
+
font-family:"Times New Roman";
|
36
|
+
mso-fareast-font-family:"Times New Roman";}
|
37
|
+
span.GramE
|
38
|
+
{mso-style-name:"";
|
39
|
+
mso-gram-e:yes;}
|
40
|
+
@page Section1
|
41
|
+
{size:595.3pt 841.9pt;
|
42
|
+
margin:70.85pt 2.0cm 2.0cm 2.0cm;
|
43
|
+
mso-header-margin:35.4pt;
|
44
|
+
mso-footer-margin:35.4pt;
|
45
|
+
mso-paper-source:0;}
|
46
|
+
div.Section1
|
47
|
+
{page:Section1;}
|
48
|
+
-->
|
49
|
+
</style>
|
50
|
+
<!--[if gte mso 10]>
|
51
|
+
<style>
|
52
|
+
/* Style Definitions */
|
53
|
+
table.MsoNormalTable
|
54
|
+
{mso-style-name:"Tabella normale";
|
55
|
+
mso-tstyle-rowband-size:0;
|
56
|
+
mso-tstyle-colband-size:0;
|
57
|
+
mso-style-noshow:yes;
|
58
|
+
mso-style-parent:"";
|
59
|
+
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
|
60
|
+
mso-para-margin:0cm;
|
61
|
+
mso-para-margin-bottom:.0001pt;
|
62
|
+
mso-pagination:widow-orphan;
|
63
|
+
font-size:10.0pt;
|
64
|
+
font-family:"Times New Roman";
|
65
|
+
mso-ansi-language:#0400;
|
66
|
+
mso-fareast-language:#0400;
|
67
|
+
mso-bidi-language:#0400;}
|
68
|
+
</style>
|
69
|
+
<![endif]-->
|
70
|
+
</head>
|
71
|
+
|
72
|
+
<body lang=IT style='tab-interval:35.4pt'>
|
73
|
+
|
74
|
+
<div class=Section1>
|
75
|
+
|
76
|
+
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
|
77
|
+
style='border-collapse:collapse;mso-padding-alt:0cm 0cm 0cm 0cm'>
|
78
|
+
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
|
79
|
+
<td colspan=3 valign=top style='border:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
80
|
+
<p class=MsoNormal>fit.ActionFixture</p>
|
81
|
+
</td>
|
82
|
+
</tr>
|
83
|
+
<tr style='mso-yfti-irow:1'>
|
84
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
85
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
86
|
+
<p class=MsoNormal>start</p>
|
87
|
+
</td>
|
88
|
+
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
|
89
|
+
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
90
|
+
<p class=MsoNormal>Eg::Book::ChatServerActions</p>
|
91
|
+
</td>
|
92
|
+
</tr>
|
93
|
+
<tr style='mso-yfti-irow:2'>
|
94
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
95
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
96
|
+
<p class=MsoNormal>enter</p>
|
97
|
+
</td>
|
98
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
99
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
100
|
+
<p class=MsoNormal>user</p>
|
101
|
+
</td>
|
102
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
103
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
104
|
+
<p class=MsoNormal>anna</p>
|
105
|
+
</td>
|
106
|
+
</tr>
|
107
|
+
<tr style='mso-yfti-irow:3'>
|
108
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
109
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
110
|
+
<p class=MsoNormal>press</p>
|
111
|
+
</td>
|
112
|
+
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
|
113
|
+
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
114
|
+
<p class=MsoNormal>connect</p>
|
115
|
+
</td>
|
116
|
+
</tr>
|
117
|
+
<tr style='mso-yfti-irow:4'>
|
118
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
119
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
120
|
+
<p class=MsoNormal>enter</p>
|
121
|
+
</td>
|
122
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
123
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
124
|
+
<p class=MsoNormal>room</p>
|
125
|
+
</td>
|
126
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
127
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
128
|
+
<p class=MsoNormal>lotr</p>
|
129
|
+
</td>
|
130
|
+
</tr>
|
131
|
+
<tr style='mso-yfti-irow:5'>
|
132
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
133
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
134
|
+
<p class=MsoNormal>press</p>
|
135
|
+
</td>
|
136
|
+
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
|
137
|
+
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
138
|
+
<p class=MsoNormal><span class=GramE>new</span> room</p>
|
139
|
+
</td>
|
140
|
+
</tr>
|
141
|
+
<tr style='mso-yfti-irow:6'>
|
142
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
143
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
144
|
+
<p class=MsoNormal>press</p>
|
145
|
+
</td>
|
146
|
+
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
|
147
|
+
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
148
|
+
<p class=MsoNormal><span class=GramE>enter</span> room</p>
|
149
|
+
</td>
|
150
|
+
</tr>
|
151
|
+
<tr style='mso-yfti-irow:7'>
|
152
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
153
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
154
|
+
<p class=MsoNormal>enter</p>
|
155
|
+
</td>
|
156
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
157
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
158
|
+
<p class=MsoNormal>user</p>
|
159
|
+
</td>
|
160
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
161
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
162
|
+
<p class=MsoNormal>luke</p>
|
163
|
+
</td>
|
164
|
+
</tr>
|
165
|
+
<tr style='mso-yfti-irow:8'>
|
166
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
167
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
168
|
+
<p class=MsoNormal>press</p>
|
169
|
+
</td>
|
170
|
+
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
|
171
|
+
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
172
|
+
<p class=MsoNormal>connect</p>
|
173
|
+
</td>
|
174
|
+
</tr>
|
175
|
+
<tr style='mso-yfti-irow:9'>
|
176
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
177
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
178
|
+
<p class=MsoNormal>press</p>
|
179
|
+
</td>
|
180
|
+
<td colspan=2 valign=top style='border-top:none;border-left:none;border-bottom:
|
181
|
+
solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
182
|
+
<p class=MsoNormal><span class=GramE>enter</span> room</p>
|
183
|
+
</td>
|
184
|
+
</tr>
|
185
|
+
<tr style='mso-yfti-irow:10;mso-yfti-lastrow:yes'>
|
186
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
187
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
188
|
+
<p class=MsoNormal>check</p>
|
189
|
+
</td>
|
190
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
191
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
192
|
+
<p class=MsoNormal><span class=GramE>occupant</span> count</p>
|
193
|
+
</td>
|
194
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
195
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
196
|
+
<p class=MsoNormal>2</p>
|
197
|
+
</td>
|
198
|
+
</tr>
|
199
|
+
</table>
|
200
|
+
|
201
|
+
<p class=MsoNormal> </p>
|
202
|
+
|
203
|
+
</div>
|
204
|
+
|
205
|
+
</body>
|
206
|
+
|
207
|
+
</html>
|
@@ -0,0 +1,178 @@
|
|
1
|
+
<html xmlns:o="urn:schemas-microsoft-com:office:office"
|
2
|
+
xmlns:w="urn:schemas-microsoft-com:office:word"
|
3
|
+
xmlns="http://www.w3.org/TR/REC-html40">
|
4
|
+
|
5
|
+
<head>
|
6
|
+
<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
|
7
|
+
<meta name=ProgId content=Word.Document>
|
8
|
+
<meta name=Generator content="Microsoft Word 11">
|
9
|
+
<meta name=Originator content="Microsoft Word 11">
|
10
|
+
<link rel=File-List href="TestDiscount_file/filelist.xml">
|
11
|
+
<title>CalculateDiscount</title>
|
12
|
+
<!--[if gte mso 9]><xml>
|
13
|
+
<w:WordDocument>
|
14
|
+
<w:GrammarState>Clean</w:GrammarState>
|
15
|
+
<w:HyphenationZone>14</w:HyphenationZone>
|
16
|
+
<w:ValidateAgainstSchemas/>
|
17
|
+
<w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
|
18
|
+
<w:IgnoreMixedContent>false</w:IgnoreMixedContent>
|
19
|
+
<w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
|
20
|
+
<w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
|
21
|
+
</w:WordDocument>
|
22
|
+
</xml><![endif]--><!--[if gte mso 9]><xml>
|
23
|
+
<w:LatentStyles DefLockedState="false" LatentStyleCount="156">
|
24
|
+
</w:LatentStyles>
|
25
|
+
</xml><![endif]-->
|
26
|
+
<style>
|
27
|
+
<!--
|
28
|
+
/* Style Definitions */
|
29
|
+
p.MsoNormal, li.MsoNormal, div.MsoNormal
|
30
|
+
{mso-style-parent:"";
|
31
|
+
margin:0cm;
|
32
|
+
margin-bottom:.0001pt;
|
33
|
+
mso-pagination:widow-orphan;
|
34
|
+
font-size:12.0pt;
|
35
|
+
font-family:"Times New Roman";
|
36
|
+
mso-fareast-font-family:"Times New Roman";}
|
37
|
+
@page Section1
|
38
|
+
{size:595.3pt 841.9pt;
|
39
|
+
margin:70.85pt 2.0cm 2.0cm 2.0cm;
|
40
|
+
mso-header-margin:35.4pt;
|
41
|
+
mso-footer-margin:35.4pt;
|
42
|
+
mso-paper-source:0;}
|
43
|
+
div.Section1
|
44
|
+
{page:Section1;}
|
45
|
+
-->
|
46
|
+
</style>
|
47
|
+
<!--[if gte mso 10]>
|
48
|
+
<style>
|
49
|
+
/* Style Definitions */
|
50
|
+
table.MsoNormalTable
|
51
|
+
{mso-style-name:"Tabella normale";
|
52
|
+
mso-tstyle-rowband-size:0;
|
53
|
+
mso-tstyle-colband-size:0;
|
54
|
+
mso-style-noshow:yes;
|
55
|
+
mso-style-parent:"";
|
56
|
+
mso-padding-alt:0cm 5.4pt 0cm 5.4pt;
|
57
|
+
mso-para-margin:0cm;
|
58
|
+
mso-para-margin-bottom:.0001pt;
|
59
|
+
mso-pagination:widow-orphan;
|
60
|
+
font-size:10.0pt;
|
61
|
+
font-family:"Times New Roman";
|
62
|
+
mso-ansi-language:#0400;
|
63
|
+
mso-fareast-language:#0400;
|
64
|
+
mso-bidi-language:#0400;}
|
65
|
+
</style>
|
66
|
+
<![endif]-->
|
67
|
+
</head>
|
68
|
+
|
69
|
+
<body lang=IT style='tab-interval:35.4pt'>
|
70
|
+
|
71
|
+
<div class=Section1>
|
72
|
+
|
73
|
+
<table class=MsoNormalTable border=0 cellspacing=0 cellpadding=0
|
74
|
+
style='border-collapse:collapse;mso-padding-alt:0cm 0cm 0cm 0cm'>
|
75
|
+
<tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
|
76
|
+
<td colspan=2 valign=top style='border:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
77
|
+
<p class=MsoNormal>Eg::Book::CalculateDiscount</p>
|
78
|
+
</td>
|
79
|
+
</tr>
|
80
|
+
<tr style='mso-yfti-irow:1'>
|
81
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
82
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
83
|
+
<p class=MsoNormal>amount</p>
|
84
|
+
</td>
|
85
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
86
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
87
|
+
<p class=MsoNormal>discount()</p>
|
88
|
+
</td>
|
89
|
+
</tr>
|
90
|
+
<tr style='mso-yfti-irow:2'>
|
91
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
92
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
93
|
+
<p class=MsoNormal>0.00</p>
|
94
|
+
</td>
|
95
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
96
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
97
|
+
<p class=MsoNormal>0.00</p>
|
98
|
+
</td>
|
99
|
+
</tr>
|
100
|
+
<tr style='mso-yfti-irow:3'>
|
101
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
102
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
103
|
+
<p class=MsoNormal>100.00</p>
|
104
|
+
</td>
|
105
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
106
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
107
|
+
<p class=MsoNormal>0.00</p>
|
108
|
+
</td>
|
109
|
+
</tr>
|
110
|
+
<tr style='mso-yfti-irow:4'>
|
111
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
112
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
113
|
+
<p class=MsoNormal>999.00</p>
|
114
|
+
</td>
|
115
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
116
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
117
|
+
<p class=MsoNormal>0.00</p>
|
118
|
+
</td>
|
119
|
+
</tr>
|
120
|
+
<tr style='mso-yfti-irow:5'>
|
121
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
122
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
123
|
+
<p class=MsoNormal>1000.00</p>
|
124
|
+
</td>
|
125
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
126
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
127
|
+
<p class=MsoNormal>0.00</p>
|
128
|
+
</td>
|
129
|
+
</tr>
|
130
|
+
<tr style='mso-yfti-irow:6'>
|
131
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
132
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
133
|
+
<p class=MsoNormal>1010.00</p>
|
134
|
+
</td>
|
135
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
136
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
137
|
+
<p class=MsoNormal>50.50</p>
|
138
|
+
</td>
|
139
|
+
</tr>
|
140
|
+
<tr style='mso-yfti-irow:7'>
|
141
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
142
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
143
|
+
<p class=MsoNormal>1100.00</p>
|
144
|
+
</td>
|
145
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
146
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
147
|
+
<p class=MsoNormal>55.00</p>
|
148
|
+
</td>
|
149
|
+
</tr>
|
150
|
+
<tr style='mso-yfti-irow:8'>
|
151
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
152
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
153
|
+
<p class=MsoNormal>1200.00</p>
|
154
|
+
</td>
|
155
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
156
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
157
|
+
<p class=MsoNormal>60.00</p>
|
158
|
+
</td>
|
159
|
+
</tr>
|
160
|
+
<tr style='mso-yfti-irow:9;mso-yfti-lastrow:yes'>
|
161
|
+
<td valign=top style='border:solid windowtext 1.0pt;border-top:none;
|
162
|
+
padding:0cm 5.4pt 0cm 5.4pt'>
|
163
|
+
<p class=MsoNormal>2000.00</p>
|
164
|
+
</td>
|
165
|
+
<td valign=top style='border-top:none;border-left:none;border-bottom:solid windowtext 1.0pt;
|
166
|
+
border-right:solid windowtext 1.0pt;padding:0cm 5.4pt 0cm 5.4pt'>
|
167
|
+
<p class=MsoNormal>100.00</p>
|
168
|
+
</td>
|
169
|
+
</tr>
|
170
|
+
</table>
|
171
|
+
|
172
|
+
<p class=MsoNormal> </p>
|
173
|
+
|
174
|
+
</div>
|
175
|
+
|
176
|
+
</body>
|
177
|
+
|
178
|
+
</html>
|