statsample 1.4.1 → 1.4.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.
Files changed (50) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +4 -3
  3. data/History.txt +4 -0
  4. data/README.md +4 -0
  5. data/lib/statsample/converter/csv.rb +41 -54
  6. data/lib/statsample/converters.rb +18 -19
  7. data/lib/statsample/version.rb +1 -1
  8. data/test/fixtures/scientific_notation.csv +4 -0
  9. data/test/helpers_tests.rb +37 -38
  10. data/test/test_analysis.rb +96 -97
  11. data/test/test_anova_contrast.rb +22 -22
  12. data/test/test_anovaoneway.rb +12 -12
  13. data/test/test_anovatwoway.rb +16 -17
  14. data/test/test_anovatwowaywithdataset.rb +22 -24
  15. data/test/test_anovawithvectors.rb +67 -69
  16. data/test/test_awesome_print_bug.rb +9 -9
  17. data/test/test_bartlettsphericity.rb +13 -13
  18. data/test/test_bivariate.rb +122 -126
  19. data/test/test_codification.rb +51 -49
  20. data/test/test_crosstab.rb +44 -40
  21. data/test/test_csv.rb +52 -70
  22. data/test/test_dataset.rb +347 -330
  23. data/test/test_dominance_analysis.rb +22 -24
  24. data/test/test_factor.rb +163 -166
  25. data/test/test_factor_map.rb +25 -30
  26. data/test/test_factor_pa.rb +28 -28
  27. data/test/test_ggobi.rb +19 -18
  28. data/test/test_gsl.rb +13 -15
  29. data/test/test_histogram.rb +74 -77
  30. data/test/test_matrix.rb +29 -31
  31. data/test/test_multiset.rb +132 -126
  32. data/test/test_regression.rb +143 -149
  33. data/test/test_reliability.rb +149 -155
  34. data/test/test_reliability_icc.rb +100 -104
  35. data/test/test_reliability_skillscale.rb +38 -40
  36. data/test/test_resample.rb +14 -12
  37. data/test/test_rserve_extension.rb +33 -33
  38. data/test/test_srs.rb +5 -5
  39. data/test/test_statistics.rb +52 -50
  40. data/test/test_stest.rb +27 -28
  41. data/test/test_stratified.rb +10 -10
  42. data/test/test_test_f.rb +17 -17
  43. data/test/test_test_kolmogorovsmirnov.rb +21 -21
  44. data/test/test_test_t.rb +52 -52
  45. data/test/test_umannwhitney.rb +16 -16
  46. data/test/test_vector.rb +419 -410
  47. data/test/test_wilcoxonsignedrank.rb +60 -63
  48. data/test/test_xls.rb +41 -41
  49. metadata +55 -5
  50. data/web/Rakefile +0 -39
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b3785ac7ce81dbffc75370cb51d4535a108808c4
4
- data.tar.gz: eadd3e56fdcd4799bc90b6d509308d6fb683382d
3
+ metadata.gz: 21623aa3ff95567e88e39a61d2434421986cab0f
4
+ data.tar.gz: b756a2e887c54074e1bdc00463300986f7550a25
5
5
  SHA512:
6
- metadata.gz: ae9452c11cd369739eaf461367ffa3e07fe59ba1ab35b93618a5466102f38bf5d387e86a81ea8bfdbb7b5f0e86053f1eebb7aa96c6f00ed38e14a85c63e86902
7
- data.tar.gz: 5d17bd754f46b4db64e8b2a52ecbddcf01c13392593e365a075acbf4cf5077855b54bd9e51e495294741eec29d920b03e8e7e30fe13c87725f56bc554a6a6895
6
+ metadata.gz: c5862455f9174d9567ef9807fb8356d19f8ae9b13e471470da0a60c6703680f9c5da2ede368b62f1dfb59d67f18e2ac63e693f6fae242b015c831b8960d70649
7
+ data.tar.gz: a4b8cb9ebca8aacc221d1f32b15516c3a3d7944d8601219b88bbb531af5a83164eb957b38e62c0211c80932d80b4df670c065a942194c844a8c7b722e1c06449
data/.travis.yml CHANGED
@@ -2,9 +2,10 @@ language:
2
2
  ruby
3
3
 
4
4
  rvm:
5
- - '1.9.3'
6
- - '2.0.0'
7
- - '2.1.1'
5
+ - 1.9.3
6
+ - 2.0
7
+ - 2.1
8
+ - 2.2
8
9
 
9
10
  script:
10
11
  bundle exec rake test
data/History.txt CHANGED
@@ -1,3 +1,7 @@
1
+ === 1.4.2 / 2015-04-07
2
+ * Statsample::CSV.read accepts numbers in scientific notation.
3
+ * Test on Ruby 2.2 via Travis CI.
4
+
1
5
  === 1.4.1 / 2015-03-26
2
6
  * Removed Hoe gem in order to use `statsample.gemspec`.
3
7
  * Improved readability of some files by using rubocop.
data/README.md CHANGED
@@ -33,6 +33,10 @@ If you need to work on Structural Equation Modeling, you could see +statsample-s
33
33
  $ [sudo] gem install statsample-sem
34
34
  ```
35
35
 
36
+ # Documentation
37
+
38
+ You can see the latest documentation in [rubydoc.info](http://www.rubydoc.info/github/sciruby/statsample/master).
39
+
36
40
  # Description
37
41
 
38
42
  A suite for basic and advanced statistics on Ruby. Tested on CRuby 1.9.3, 2.0.0 and 2.1.1. See `.travis.yml` for more information.
@@ -1,77 +1,64 @@
1
+ require 'csv'
2
+
1
3
  module Statsample
2
4
  class CSV < SpreadsheetBase
3
- if RUBY_VERSION<"1.9"
4
- require 'fastercsv'
5
- CSV_klass=::FasterCSV
6
- else
7
- require 'csv'
8
- CSV_klass=::CSV
9
- end
10
- class << self
5
+ # Default options for processing CSV files. Accept the same options as
6
+ # Ruby's `CSV#new`.
7
+ DEFAULT_OPTIONS = {
8
+ converters: [:numeric]
9
+ }
11
10
 
12
- def read19(filename,ignore_lines=0,csv_opts=Hash.new)
13
- #default first line is header
14
- csv_opts.merge!(:headers=>true, :header_converters => :symbol)
15
- csv = CSV_klass::Table.new(CSV_klass::read(filename,'r',csv_opts))
16
- csv_headers = if csv_opts[:headers]
17
- csv.headers
18
- else
19
- #as in R, if no header we name the headers as V1,V2,V3,V4,..
20
- 1.upto(csv.first.length).collect { |i| "V#{i}" }
21
- end
22
- #we invert row -> column. It means csv[0] is the first column and not row. Similar to R
23
- csv.by_col!
24
- thash = {}
25
- csv_headers.each_with_index do |header,idx|
26
- thash[header] = Statsample::Vector.new(csv[idx].drop(ignore_lines))
27
- end
28
- Statsample::Dataset.new(thash)
29
- end
30
- # Returns a Dataset based on a csv file
11
+ class << self
12
+ # Return a Dataset created from a csv file.
31
13
  #
32
14
  # USE:
33
- # ds=Statsample::CSV.read("test_csv.csv")
34
- def read(filename, empty=[''],ignore_lines=0,csv_opts=Hash.new)
35
- first_row=true
36
- fields=[]
37
- #fields_data={}
38
- ds=nil
39
- line_number=0
40
- csv=CSV_klass.open(filename,'rb', csv_opts)
15
+ # ds = Statsample::CSV.read('test_csv.csv')
16
+ def read(filename, empty = [''], ignore_lines = 0, opts = {})
17
+ first_row = true
18
+ fields = []
19
+ ds = nil
20
+ line_number = 0
21
+ options = DEFAULT_OPTIONS.merge(opts)
22
+
23
+ csv = ::CSV.open(filename, 'rb', options)
24
+
41
25
  csv.each do |row|
42
- line_number+=1
43
- if(line_number<=ignore_lines)
44
- #puts "Skip line"
26
+ line_number += 1
27
+
28
+ if (line_number <= ignore_lines)
45
29
  next
46
30
  end
47
- row.collect!{|c| c.to_s }
31
+
48
32
  if first_row
49
- fields=extract_fields(row)
50
- ds=Statsample::Dataset.new(fields)
51
- first_row=false
33
+ fields = extract_fields(row)
34
+ ds = Statsample::Dataset.new(fields)
35
+ first_row = false
52
36
  else
53
- rowa=process_row(row,empty)
54
- ds.add_case(rowa,false)
37
+ rowa = process_row(row, empty)
38
+ ds.add_case(rowa, false)
55
39
  end
56
40
  end
57
- convert_to_scale_and_date(ds,fields)
41
+
42
+ convert_to_scale_and_date(ds, fields)
58
43
  ds.update_valid_data
59
44
  ds
60
45
  end
61
- # Save a Dataset on a csv file
46
+
47
+ # Save a Dataset on a csv file.
62
48
  #
63
49
  # USE:
64
- # Statsample::CSV.write(ds,"test_csv.csv")
65
- def write(dataset,filename, convert_comma=false,*opts)
66
-
67
- writer=CSV_klass.open(filename,'w',*opts)
50
+ # Statsample::CSV.write(ds, 'test_csv.csv')
51
+ def write(dataset, filename, convert_comma = false, opts = {})
52
+ options = DEFAULT_OPTIONS.merge(opts)
53
+
54
+ writer = ::CSV.open(filename, 'w', options)
68
55
  writer << dataset.fields
69
- dataset.each_array do|row|
70
- if(convert_comma)
71
- row.collect!{|v| v.to_s.gsub(".",",")}
72
- end
56
+
57
+ dataset.each_array do |row|
58
+ row.collect! { |v| v.to_s.gsub('.', ',') } if convert_comma
73
59
  writer << row
74
60
  end
61
+
75
62
  writer.close
76
63
  end
77
64
  end
@@ -31,13 +31,13 @@ module Statsample
31
31
  # Insert each case of the Dataset on the selected table
32
32
  #
33
33
  # USE:
34
- #
34
+ #
35
35
  # ds={'id'=>[1,2,3].to_vector, 'name'=>["a","b","c"].to_vector}.to_dataset
36
36
  # dbh = DBI.connect("DBI:Mysql:database:localhost", "user", "password")
37
37
  # Statsample::Database.insert(ds,dbh,"test")
38
38
  #
39
39
  def insert(ds, dbh, table)
40
- require 'dbi'
40
+ require 'dbi'
41
41
  query="INSERT INTO #{table} ("+ds.fields.join(",")+") VALUES ("+((["?"]*ds.fields.size).join(","))+")"
42
42
  sth=dbh.prepare(query)
43
43
  ds.each_array{|c| sth.execute(*c) }
@@ -46,11 +46,11 @@ module Statsample
46
46
  # Create a sql, basen on a given Dataset
47
47
  #
48
48
  # USE:
49
- #
49
+ #
50
50
  # ds={'id'=>[1,2,3,4,5].to_vector,'name'=>%w{Alex Peter Susan Mary John}.to_vector}.to_dataset
51
51
  # Statsample::Database.create_sql(ds,'names')
52
52
  # ==>"CREATE TABLE names (id INTEGER,\n name VARCHAR (255)) CHARACTER SET=UTF8;"
53
- #
53
+ #
54
54
  def create_sql(ds,table,charset="UTF8")
55
55
  sql="CREATE TABLE #{table} ("
56
56
  fields=ds.fields.collect{|f|
@@ -81,14 +81,14 @@ module Statsample
81
81
  fields=row.to_a.collect{|c|
82
82
  if c.nil?
83
83
  i+=1
84
- "var%05d" % i
84
+ "var%05d" % i
85
85
  else
86
86
  c.to_s.downcase
87
- end
87
+ end
88
88
  }
89
89
  fields.recode_repeated
90
90
  end
91
-
91
+
92
92
  def process_row(row,empty)
93
93
  row.to_a.map do |c|
94
94
  if empty.include?(c)
@@ -115,7 +115,7 @@ module Statsample
115
115
  end
116
116
  end
117
117
  end
118
-
118
+
119
119
  end
120
120
  end
121
121
  class PlainText < SpreadsheetBase
@@ -137,7 +137,7 @@ module Statsample
137
137
  end
138
138
  end
139
139
  end
140
- class Excel < SpreadsheetBase
140
+ class Excel < SpreadsheetBase
141
141
  class << self
142
142
  # Write a Excel spreadsheet based on a dataset
143
143
  # * TODO: Format nicely date values
@@ -177,7 +177,7 @@ module Statsample
177
177
  }
178
178
  end
179
179
  private :process_row, :preprocess_row
180
-
180
+
181
181
  # Returns a dataset based on a xls file
182
182
  # USE:
183
183
  # ds = Statsample::Excel.read("test.xls")
@@ -186,20 +186,19 @@ module Statsample
186
186
  require 'spreadsheet'
187
187
  raise "options should be Hash" unless opts.is_a? Hash
188
188
  opts_default={
189
- :worksheet_id=>0,
190
- :ignore_lines=>0,
189
+ :worksheet_id=>0,
190
+ :ignore_lines=>0,
191
191
  :empty=>['']
192
192
  }
193
-
193
+
194
194
  opts=opts_default.merge opts
195
-
195
+
196
196
  worksheet_id=opts[:worksheet_id]
197
197
  ignore_lines=opts[:ignore_lines]
198
198
  empty=opts[:empty]
199
-
199
+
200
200
  first_row=true
201
201
  fields=[]
202
- fields_data={}
203
202
  ds=nil
204
203
  line_number=0
205
204
  book = Spreadsheet.open filename
@@ -214,7 +213,7 @@ module Statsample
214
213
  }
215
214
  line_number+=1
216
215
  next if(line_number<=ignore_lines)
217
-
216
+
218
217
  preprocess_row(row,dates)
219
218
  if first_row
220
219
  fields=extract_fields(row)
@@ -296,7 +295,7 @@ module Statsample
296
295
  variables_def=dataset.fields.collect{|k|
297
296
  variable_definition(carrier,dataset[k],k)
298
297
  }.join("\n")
299
-
298
+
300
299
  indexes=carrier.categorials.inject({}) {|s,c|
301
300
  s[dataset.fields.index(c)]=c
302
301
  s
@@ -308,7 +307,7 @@ module Statsample
308
307
  }
309
308
  records << "<record>#{values_definition(c, default_opt[:missing])}</record>\n"
310
309
  }
311
-
310
+
312
311
  out=<<EOC
313
312
  <?xml version="1.0"?>
314
313
  <!DOCTYPE ggobidata SYSTEM "ggobi.dtd">
@@ -1,3 +1,3 @@
1
1
  module Statsample
2
- VERSION = '1.4.1'
2
+ VERSION = '1.4.2'
3
3
  end
@@ -0,0 +1,4 @@
1
+ x,y
2
+ 1,9.629587310436753e+127
3
+ 2,1.9341543147883677e+129
4
+ 3,3.88485279048245e+130
@@ -1,5 +1,6 @@
1
- $:.unshift(File.expand_path(File.dirname(__FILE__)+'/../lib/'))
2
- $:.unshift(File.expand_path(File.dirname(__FILE__)+'/'))
1
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/../lib/'))
2
+ $LOAD_PATH.unshift(File.expand_path(File.dirname(__FILE__) + '/'))
3
+
3
4
  require 'minitest'
4
5
  require 'minitest/unit'
5
6
  require 'mocha/setup'
@@ -11,67 +12,65 @@ require 'fixtures/correlation_matrix'
11
12
 
12
13
  require 'statsample'
13
14
 
14
-
15
- module MiniTest
15
+ module Minitest
16
16
  class Test
17
17
  include Shoulda::Context::Assertions
18
18
  include Shoulda::Context::InstanceMethods
19
19
  extend Shoulda::Context::ClassMethods
20
- def self.should_with_gsl(name,&block)
21
- should(name) do
22
- if Statsample.has_gsl?
23
- instance_eval(&block)
24
- else
25
- skip("Requires GSL")
26
- end
27
-
20
+
21
+ def self.should_with_gsl(name, &block)
22
+ should(name) do
23
+ if Statsample.has_gsl?
24
+ instance_eval(&block)
25
+ else
26
+ skip('Requires GSL')
28
27
  end
29
-
30
-
28
+ end
31
29
  end
32
30
  end
33
31
 
34
32
  module Assertions
35
- def assert_similar_vector(exp, obs, delta=1e-10,msg=nil)
36
- msg||="Different vectors #{exp} - #{obs}"
33
+ def assert_similar_vector(exp, obs, delta = 1e-10, msg = nil)
34
+ msg ||= "Different vectors #{exp} - #{obs}"
37
35
  assert_equal(exp.size, obs.size)
38
- exp.data_with_nils.each_with_index {|v,i|
39
- assert_in_delta(v,obs[i],delta)
36
+ exp.data_with_nils.each_with_index {|v, i|
37
+ assert_in_delta(v, obs[i], delta)
40
38
  }
41
39
  end
42
- def assert_equal_vector(exp,obs,delta=1e-10,msg=nil)
40
+
41
+ def assert_equal_vector(exp, obs, delta = 1e-10, msg = nil)
43
42
  assert_equal(exp.size, obs.size, "Different size.#{msg}")
44
43
  exp.size.times {|i|
45
- assert_in_delta(exp[i],obs[i],delta, "Different element #{i}. \nExpected:\n#{exp}\nObserved:\n#{obs}.#{msg}")
44
+ assert_in_delta(exp[i], obs[i], delta, "Different element #{i}. \nExpected:\n#{exp}\nObserved:\n#{obs}.#{msg}")
46
45
  }
47
46
  end
48
- def assert_equal_matrix(exp,obs,delta=1e-10,msg=nil)
49
- assert_equal(exp.row_size, obs.row_size, "Different row size.#{msg}")
50
- assert_equal(exp.column_size, obs.column_size, "Different column size.#{msg}")
51
- exp.row_size.times {|i|
52
- exp.column_size.times {|j|
53
- assert_in_delta(exp[i,j],obs[i,j], delta, "Different element #{i},#{j}\nExpected:\n#{exp}\nObserved:\n#{obs}.#{msg}")
54
- }
55
- }
47
+
48
+ def assert_equal_matrix(exp, obs, delta = 1e-10, msg = nil)
49
+ assert_equal(exp.row_size, obs.row_size, "Different row size.#{msg}")
50
+ assert_equal(exp.column_size, obs.column_size, "Different column size.#{msg}")
51
+ exp.row_size.times {|i|
52
+ exp.column_size.times {|j|
53
+ assert_in_delta(exp[i, j], obs[i, j], delta, "Different element #{i},#{j}\nExpected:\n#{exp}\nObserved:\n#{obs}.#{msg}")
54
+ }
55
+ }
56
56
  end
57
- alias :assert_raise :assert_raises unless method_defined? :assert_raise
58
- alias :assert_not_equal :refute_equal unless method_defined? :assert_not_equal
59
- alias :assert_not_same :refute_same unless method_defined? :assert_not_same
57
+ alias_method :assert_raise, :assert_raises unless method_defined? :assert_raise
58
+ alias_method :assert_not_equal, :refute_equal unless method_defined? :assert_not_equal
59
+ alias_method :assert_not_same, :refute_same unless method_defined? :assert_not_same
60
60
  unless method_defined? :assert_nothing_raised
61
- def assert_nothing_raised(msg=nil)
62
- msg||="Nothing should be raised, but raised %s"
61
+ def assert_nothing_raised(msg = nil)
62
+ msg ||= 'Nothing should be raised, but raised %s'
63
63
  begin
64
64
  yield
65
- not_raised=true
65
+ not_raised = true
66
66
  rescue Exception => e
67
- not_raised=false
68
- msg=sprintf(msg,e)
67
+ not_raised = false
68
+ msg = sprintf(msg, e)
69
69
  end
70
- assert(not_raised,msg)
70
+ assert(not_raised, msg)
71
71
  end
72
72
  end
73
73
  end
74
74
  end
75
75
 
76
76
  MiniTest.autorun
77
-
@@ -1,77 +1,77 @@
1
- require(File.expand_path(File.dirname(__FILE__)+'/helpers_tests.rb'))
1
+ require(File.expand_path(File.dirname(__FILE__) + '/helpers_tests.rb'))
2
2
 
3
- class StatsampleAnalysisTestCase < MiniTest::Unit::TestCase
3
+ class StatsampleAnalysisTestCase < Minitest::Test
4
4
  context(Statsample::Analysis) do
5
5
  setup do
6
6
  Statsample::Analysis.clear_analysis
7
7
  end
8
- should "store() should create and store Statsample::Analysis::Suite" do
8
+ should 'store() should create and store Statsample::Analysis::Suite' do
9
9
  Statsample::Analysis.store(:first) do
10
- a=1
10
+ a = 1
11
11
  end
12
12
  assert(Statsample::Analysis.stored_analysis[:first])
13
13
  assert(Statsample::Analysis.stored_analysis[:first].is_a? Statsample::Analysis::Suite)
14
14
  end
15
-
16
- should "ss_analysis should create an Statsample::Analysis" do
17
- ss_analysis(:first) {a=1}
15
+
16
+ should 'ss_analysis should create an Statsample::Analysis' do
17
+ ss_analysis(:first) { a = 1 }
18
18
  end
19
- should "store last created analysis" do
20
- an=Statsample::Analysis.store(:first) do
21
- a=1
19
+ should 'store last created analysis' do
20
+ an = Statsample::Analysis.store(:first) do
21
+ a = 1
22
22
  end
23
- assert_equal(an,Statsample::Analysis.last)
23
+ assert_equal(an, Statsample::Analysis.last)
24
24
  end
25
-
26
- should "add_to_reportbuilder() add sections to reportbuilder object" do
27
- rb=mock()
28
- rb.expects(:add).with {|value| value.is_a? ReportBuilder::Section and value.name==:first}
29
- rb.expects(:add).with {|value| value.is_a? ReportBuilder::Section and value.name==:second}
30
-
25
+
26
+ should 'add_to_reportbuilder() add sections to reportbuilder object' do
27
+ rb = mock
28
+ rb.expects(:add).with { |value| value.is_a? ReportBuilder::Section and value.name == :first }
29
+ rb.expects(:add).with { |value| value.is_a? ReportBuilder::Section and value.name == :second }
30
+
31
31
  Statsample::Analysis.store(:first) do
32
- echo "first","second"
32
+ echo 'first', 'second'
33
33
  end
34
34
  Statsample::Analysis.store(:second) do
35
- echo "third"
35
+ echo 'third'
36
36
  end
37
- Statsample::Analysis.add_to_reportbuilder(rb,:first,:second)
37
+ Statsample::Analysis.add_to_reportbuilder(rb, :first, :second)
38
38
  end
39
- should "to_text returns the same as a normal ReportBuilder object" do
40
- rb=ReportBuilder.new(:name=>:test)
41
- section=ReportBuilder::Section.new(:name=>"first")
42
- a=[1,2,3].to_scale
43
- section.add("first")
39
+ should 'to_text returns the same as a normal ReportBuilder object' do
40
+ rb = ReportBuilder.new(name: :test)
41
+ section = ReportBuilder::Section.new(name: 'first')
42
+ a = [1, 2, 3].to_scale
43
+ section.add('first')
44
44
  section.add(a)
45
45
  rb.add(section)
46
- exp=rb.to_text
47
- an=ss_analysis(:first) {
46
+ exp = rb.to_text
47
+ an = ss_analysis(:first) {
48
48
  echo 'first'
49
49
  summary(a)
50
50
  }
51
- obs=Statsample::Analysis.to_text(:first)
52
-
53
- assert_equal(exp.split("\n")[1,exp.size], obs.split("\n")[1,obs.size])
51
+ obs = Statsample::Analysis.to_text(:first)
52
+
53
+ assert_equal(exp.split("\n")[1, exp.size], obs.split("\n")[1, obs.size])
54
54
  end
55
-
56
- should "run() execute all analysis by default" do
57
- m1=mock()
55
+
56
+ should 'run() execute all analysis by default' do
57
+ m1 = mock
58
58
  m1.expects(:run).once
59
59
  m1.expects(:hide).once
60
-
60
+
61
61
  Statsample::Analysis.store(:first) do
62
62
  m1.run
63
63
  end
64
64
  Statsample::Analysis.store(:second) do
65
65
  m1.hide
66
66
  end
67
-
67
+
68
68
  # Should run all test
69
69
  Statsample::Analysis.run
70
70
  end
71
-
72
- should "run() execute blocks specificed on parameters" do
73
- m1=mock()
74
- m1.expects(:run).once
71
+
72
+ should 'run() execute blocks specificed on parameters' do
73
+ m1 = mock
74
+ m1.expects(:run).once
75
75
  m1.expects(:hide).never
76
76
  Statsample::Analysis.store(:first) do
77
77
  m1.run
@@ -82,78 +82,78 @@ class StatsampleAnalysisTestCase < MiniTest::Unit::TestCase
82
82
  # Should run all test
83
83
  Statsample::Analysis.run(:first)
84
84
  end
85
-
85
+
86
86
  context(Statsample::Analysis::Suite) do
87
- should "echo() uses output#puts with same arguments" do
88
- an=Statsample::Analysis::Suite.new(:output)
89
- obj=mock()
90
- obj.expects(:puts).with(:first,:second).once
91
- an.output=obj
92
- an.echo(:first,:second)
93
- end
94
- should "summary() should call object.summary" do
95
- an=Statsample::Analysis::Suite.new(:summary)
96
- obj=stub('summarizable',:summary=>'summary')
97
- assert_equal(obj.summary,an.summary(obj))
98
- end
99
- should "attach() allows to call objects on objects which respond to fields" do
100
- an=Statsample::Analysis::Suite.new(:summary)
101
- ds={'x'=>stub(:mean=>10),'y'=>stub(:mean=>12)}
102
- ds.expects(:fields).returns(%w{x y}).at_least_once
87
+ should 'echo() uses output#puts with same arguments' do
88
+ an = Statsample::Analysis::Suite.new(:output)
89
+ obj = mock
90
+ obj.expects(:puts).with(:first, :second).once
91
+ an.output = obj
92
+ an.echo(:first, :second)
93
+ end
94
+ should 'summary() should call object.summary' do
95
+ an = Statsample::Analysis::Suite.new(:summary)
96
+ obj = stub('summarizable', summary: 'summary')
97
+ assert_equal(obj.summary, an.summary(obj))
98
+ end
99
+ should 'attach() allows to call objects on objects which respond to fields' do
100
+ an = Statsample::Analysis::Suite.new(:summary)
101
+ ds = { 'x' => stub(mean: 10), 'y' => stub(mean: 12) }
102
+ ds.expects(:fields).returns(%w(x y)).at_least_once
103
103
  an.attach(ds)
104
- assert_equal(10,an.x.mean)
105
- assert_equal(12,an.y.mean)
104
+ assert_equal(10, an.x.mean)
105
+ assert_equal(12, an.y.mean)
106
106
  assert_raise(RuntimeError) {
107
107
  an.z
108
108
  }
109
109
  end
110
- should "attached objects should be called LIFO" do
111
- an=Statsample::Analysis::Suite.new(:summary)
112
- ds1={'x'=>stub(:mean=>100),'y'=>stub(:mean=>120),'z'=>stub(:mean=>13)}
113
- ds1.expects(:fields).returns(%w{x y z}).at_least_once
114
- ds2={'x'=>stub(:mean=>10),'y'=>stub(:mean=>12)}
115
- ds2.expects(:fields).returns(%w{x y}).at_least_once
110
+ should 'attached objects should be called LIFO' do
111
+ an = Statsample::Analysis::Suite.new(:summary)
112
+ ds1 = { 'x' => stub(mean: 100), 'y' => stub(mean: 120), 'z' => stub(mean: 13) }
113
+ ds1.expects(:fields).returns(%w(x y z)).at_least_once
114
+ ds2 = { 'x' => stub(mean: 10), 'y' => stub(mean: 12) }
115
+ ds2.expects(:fields).returns(%w(x y)).at_least_once
116
116
  an.attach(ds1)
117
117
  an.attach(ds2)
118
- assert_equal(10,an.x.mean)
119
- assert_equal(12,an.y.mean)
120
- assert_equal(13,an.z.mean)
121
- end
122
-
123
- should "detach() without arguments drop latest object" do
124
- an=Statsample::Analysis::Suite.new(:summary)
125
- ds1={'x'=>stub(:mean=>100),'y'=>stub(:mean=>120),'z'=>stub(:mean=>13)}
126
- ds1.expects(:fields).returns(%w{x y z}).at_least_once
127
- ds2={'x'=>stub(:mean=>10),'y'=>stub(:mean=>12)}
128
- ds2.expects(:fields).returns(%w{x y}).at_least_once
118
+ assert_equal(10, an.x.mean)
119
+ assert_equal(12, an.y.mean)
120
+ assert_equal(13, an.z.mean)
121
+ end
122
+
123
+ should 'detach() without arguments drop latest object' do
124
+ an = Statsample::Analysis::Suite.new(:summary)
125
+ ds1 = { 'x' => stub(mean: 100), 'y' => stub(mean: 120), 'z' => stub(mean: 13) }
126
+ ds1.expects(:fields).returns(%w(x y z)).at_least_once
127
+ ds2 = { 'x' => stub(mean: 10), 'y' => stub(mean: 12) }
128
+ ds2.expects(:fields).returns(%w(x y)).at_least_once
129
129
  an.attach(ds1)
130
130
  an.attach(ds2)
131
- assert_equal(10,an.x.mean)
131
+ assert_equal(10, an.x.mean)
132
132
  an.detach
133
133
  assert_equal(100, an.x.mean)
134
134
  end
135
- should "detach() with argument drop select object" do
136
- an=Statsample::Analysis::Suite.new(:summary)
137
- ds1={'x'=>1}
138
- ds1.expects(:fields).returns(%w{x}).at_least_once
139
- ds2={'x'=>2,'y'=>3}
140
- ds2.expects(:fields).returns(%w{x y}).at_least_once
141
- ds3={'y'=>4}
142
- ds3.expects(:fields).returns(%w{y}).at_least_once
143
-
135
+ should 'detach() with argument drop select object' do
136
+ an = Statsample::Analysis::Suite.new(:summary)
137
+ ds1 = { 'x' => 1 }
138
+ ds1.expects(:fields).returns(%w(x)).at_least_once
139
+ ds2 = { 'x' => 2, 'y' => 3 }
140
+ ds2.expects(:fields).returns(%w(x y)).at_least_once
141
+ ds3 = { 'y' => 4 }
142
+ ds3.expects(:fields).returns(%w(y)).at_least_once
143
+
144
144
  an.attach(ds3)
145
145
  an.attach(ds2)
146
146
  an.attach(ds1)
147
- assert_equal(1,an.x)
148
- assert_equal(3,an.y)
147
+ assert_equal(1, an.x)
148
+ assert_equal(3, an.y)
149
149
  an.detach(ds2)
150
- assert_equal(4,an.y)
150
+ assert_equal(4, an.y)
151
151
  end
152
- should "perform a simple analysis" do
153
- output=mock()
152
+ should 'perform a simple analysis' do
153
+ output = mock
154
154
  output.expects(:puts).with(5.5)
155
- an=Statsample::Analysis.store(:simple, :output=>output) do
156
- ds=data_frame(:x=>vector(1..10),:y=>vector(1..10))
155
+ an = Statsample::Analysis.store(:simple, output: output) do
156
+ ds = data_frame(x: vector(1..10), y: vector(1..10))
157
157
  attach(ds)
158
158
  echo x.mean
159
159
  end
@@ -161,17 +161,16 @@ class StatsampleAnalysisTestCase < MiniTest::Unit::TestCase
161
161
  end
162
162
  end
163
163
  context(Statsample::Analysis::SuiteReportBuilder) do
164
- should "echo() use add on rb object" do
165
- an=Statsample::Analysis::SuiteReportBuilder.new(:puts_to_add)
164
+ should 'echo() use add on rb object' do
165
+ an = Statsample::Analysis::SuiteReportBuilder.new(:puts_to_add)
166
166
  an.rb.expects(:add).with(:first).twice
167
167
  an.echo(:first, :first)
168
168
  end
169
- should "summary() uses add on rb object" do
170
- an=Statsample::Analysis::SuiteReportBuilder.new(:summary_to_add)
169
+ should 'summary() uses add on rb object' do
170
+ an = Statsample::Analysis::SuiteReportBuilder.new(:summary_to_add)
171
171
  an.rb.expects(:add).with(:first).once
172
172
  an.summary(:first)
173
173
  end
174
174
  end
175
-
176
175
  end
177
176
  end