statsample 1.4.1 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
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