friendly_extensions 0.0.8 → 0.0.61
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/alphanumeric.rb +2 -23
- data/lib/array.rb +16 -91
- data/lib/friendly_extensions.rb +2 -2
- data/lib/nil_class.rb +2 -5
- data/lib/numbers.rb +37 -41
- data/lib/smart_currency.rb +2 -4
- data/lib/string_and_more.rb +118 -142
- data/test/array_test.rb +3 -25
- data/test/numeric_test.rb +1 -15
- metadata +8 -19
- data/app/helpers/friends_forms_helper.rb +0 -27
- data/app/helpers/friends_labeled_form_helper.rb +0 -124
- data/app/models/friends_label.rb +0 -22
- data/config/initializers/values.rb +0 -24
- data/db/migrate/20140326005600_create_labels.rb +0 -13
- data/lib/friendly_extensions/engine.rb +0 -10
- data/test/array_test.rb.orig +0 -221
- data/test/numeric_test.rb.orig +0 -94
data/test/array_test.rb
CHANGED
@@ -24,7 +24,7 @@ class ArrayTest < Test::Unit::TestCase
|
|
24
24
|
assert_equal test_array.avg(:number), 4.5
|
25
25
|
end
|
26
26
|
|
27
|
-
def
|
27
|
+
def test_array_avg_should_no_break_with_nil_and_emtpy
|
28
28
|
assert_equal [3,nil].avg, 3
|
29
29
|
assert_equal [].avg, 0
|
30
30
|
end
|
@@ -180,33 +180,11 @@ class ArrayTest < Test::Unit::TestCase
|
|
180
180
|
assert_no_match Regexp.new("'"), a.to_sql
|
181
181
|
assert_equal a.to_sql, "(1,2,4.5)"
|
182
182
|
|
183
|
-
# All others should be
|
183
|
+
# All others should be unquoted
|
184
184
|
a = ["a", :b]
|
185
185
|
assert_match Regexp.new("'"), a.to_sql
|
186
186
|
assert_equal a.to_sql, "('a','b')"
|
187
|
-
end
|
188
|
-
|
189
|
-
#== Test interpolation
|
190
|
-
def test_array_should_interpolate
|
191
|
-
|
192
|
-
# First should not fail
|
193
|
-
assert_equal [nil,1,2].interpolate(nil), [0,1,2]
|
194
|
-
# These fail:
|
195
|
-
# assert_equal [nil, nil,1,2].interpolate(nil), [-1, 0,1,2]
|
196
|
-
|
197
|
-
|
198
|
-
# Last should not fail
|
199
|
-
assert_equal [1,2,3], [1,2,nil].interpolate(nil).map {|x| x.to_i }
|
200
|
-
# These fail:
|
201
|
-
# assert_equal [1,2,3,4], [1,2,nil,nil].interpolate(nil).map {|x| x.to_i }
|
202
|
-
|
203
|
-
# In The middle
|
204
|
-
assert_equal [1,2,3,4,5], [1,2,3,nil,5].interpolate(nil).map {|x| x.to_i }
|
205
|
-
assert_equal [1,2,3,4,5], [1,2,nil,nil,5].interpolate(nil).map {|x| x.to_i }
|
206
|
-
assert_equal [5,10,15,20,25], [5,nil,15,nil,25].interpolate(nil).map {|x| x.to_i }
|
207
|
-
assert_equal [5,10,15,20,25,30], [5,nil,15,nil,nil,30].interpolate(nil).map {|x| x.to_i }
|
208
|
-
end
|
209
|
-
|
187
|
+
end
|
210
188
|
|
211
189
|
|
212
190
|
|
data/test/numeric_test.rb
CHANGED
@@ -9,10 +9,6 @@ class NumericTest < Test::Unit::TestCase
|
|
9
9
|
#assert_equal 0.29.to_euro, "0,29"
|
10
10
|
end
|
11
11
|
|
12
|
-
def test_number_should_convert_to_array
|
13
|
-
assert_equal 1.to_a, [1]
|
14
|
-
end
|
15
|
-
|
16
12
|
# Test Math Functions
|
17
13
|
def test_math_infla_defla
|
18
14
|
|
@@ -79,16 +75,6 @@ class NumericTest < Test::Unit::TestCase
|
|
79
75
|
assert_equal 73.to_time(:discard_hour => true), "01:13"
|
80
76
|
|
81
77
|
assert_equal 3672.to_time, "01:01:12"
|
82
|
-
end
|
83
|
-
|
84
|
-
def test_prime_factors
|
85
|
-
|
86
|
-
[16,234,4568,34950,183649].each do |nr|
|
87
|
-
primes = nr.prime_factors
|
88
|
-
puts "#{nr} => #{primes.inspect}"
|
89
|
-
assert_equal nr, eval(primes.join("*"))
|
90
|
-
end
|
91
|
-
|
92
|
-
end
|
78
|
+
end
|
93
79
|
|
94
80
|
end
|
metadata
CHANGED
@@ -1,59 +1,51 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: friendly_extensions
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.61
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Florian Eck
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version:
|
19
|
+
version: 3.2.9
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version:
|
26
|
+
version: 3.2.9
|
27
27
|
description: Adds serveral cool features to your Ruby classes. Includes new features
|
28
28
|
for Array, String, Hash, Numeric, Date/Datetime and some more.
|
29
|
-
email:
|
29
|
+
email: it-support@friends-systems.de
|
30
30
|
executables: []
|
31
31
|
extensions: []
|
32
32
|
extra_rdoc_files: []
|
33
33
|
files:
|
34
|
-
- app/helpers/friends_forms_helper.rb
|
35
|
-
- app/helpers/friends_labeled_form_helper.rb
|
36
|
-
- app/models/friends_label.rb
|
37
|
-
- config/initializers/values.rb
|
38
|
-
- db/migrate/20140326005600_create_labels.rb
|
39
34
|
- lib/alphanumeric.rb
|
40
35
|
- lib/array.rb
|
41
36
|
- lib/boolean.rb
|
42
37
|
- lib/chars_2_remove.rb
|
43
38
|
- lib/date_n_time.rb
|
44
39
|
- lib/friendly_extensions.rb
|
45
|
-
- lib/friendly_extensions/engine.rb
|
46
40
|
- lib/hash.rb
|
47
41
|
- lib/nil_class.rb
|
48
42
|
- lib/numbers.rb
|
49
43
|
- lib/smart_currency.rb
|
50
44
|
- lib/string_and_more.rb
|
51
45
|
- test/array_test.rb
|
52
|
-
- test/array_test.rb.orig
|
53
46
|
- test/dummy_class.rb
|
54
47
|
- test/hash_test.rb
|
55
48
|
- test/numeric_test.rb
|
56
|
-
- test/numeric_test.rb.orig
|
57
49
|
- test/string_test.rb
|
58
50
|
homepage: https://github.com/florianeck/rails_friendly_extensions
|
59
51
|
licenses: []
|
@@ -74,16 +66,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
74
66
|
version: '0'
|
75
67
|
requirements: []
|
76
68
|
rubyforge_project:
|
77
|
-
rubygems_version: 2.
|
69
|
+
rubygems_version: 2.2.1
|
78
70
|
signing_key:
|
79
71
|
specification_version: 4
|
80
72
|
summary: Collection of useful features for Ruby/Rails Classes
|
81
73
|
test_files:
|
82
74
|
- test/array_test.rb
|
83
|
-
- test/array_test.rb.orig
|
84
75
|
- test/dummy_class.rb
|
85
76
|
- test/hash_test.rb
|
86
77
|
- test/numeric_test.rb
|
87
|
-
- test/numeric_test.rb.orig
|
88
78
|
- test/string_test.rb
|
89
|
-
has_rdoc:
|
@@ -1,27 +0,0 @@
|
|
1
|
-
module FriendsFormsHelper
|
2
|
-
|
3
|
-
def fieldset(title, options = {}, &block)
|
4
|
-
if options[:if].nil? || options[:if] == true
|
5
|
-
data_string = " "
|
6
|
-
if options[:data]
|
7
|
-
options[:data].each {|d,v| data_string << "#{d}='v' "}
|
8
|
-
end
|
9
|
-
concat raw("<fieldset id='#{options[:id]}' #{data_string} class='shadow #{options[:mainclass]}' #{("style='height: %spx'" % options[:height]) if options[:height]} style='#{options[:mainstyle]}'>")
|
10
|
-
concat raw("<legend class='#{options[:class]}' style='#{options[:style]}'>#{title}</legend><div class='fieldset-content'>")
|
11
|
-
yield
|
12
|
-
concat raw("</div></fieldset>")
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def tooltip_box(tooltip)
|
17
|
-
"<span class='label-tooltip' title='#{tooltip}'> </span>".html_safe
|
18
|
-
end
|
19
|
-
|
20
|
-
def tooltip_content_box(name, options = {}, &block)
|
21
|
-
options[:default_class] ||= "icon-clue"
|
22
|
-
html = "<div class='tooltip-box'><div class='tooltip-box-label #{options[:default_class]}'>"
|
23
|
-
html << "#{name}<div class='tooltip-box-content #{options[:css]} box rounded shadow'>#{capture(&block)}</div></div></div>"
|
24
|
-
concat(html.html_safe)
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
@@ -1,124 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
module FriendsLabeledFormHelper
|
3
|
-
|
4
|
-
def self.included(arg)
|
5
|
-
ActionView::Helpers::FormBuilder.send(:include, FriendsLabeledFormBuilder)
|
6
|
-
end
|
7
|
-
|
8
|
-
def label_tag_for(object_name, method, options = {})
|
9
|
-
label_name = (options[:label].blank? ? method.to_label : options[:label])
|
10
|
-
|
11
|
-
label_name += options[:append] unless options[:append].nil?
|
12
|
-
|
13
|
-
label_text = "<span class='label-text'>#{label_name}</span>"
|
14
|
-
|
15
|
-
if options[:errors]
|
16
|
-
label_text << tooltip_box(options[:errors].to_text)
|
17
|
-
elsif ((options[:label].blank? && options[:tooltip].blank?) || !options[:tooltip].blank?) && options[:tooltip] != false
|
18
|
-
tooltip = (options[:tooltip] || method.to_label(:show_tooltip => true))
|
19
|
-
if !tooltip.blank? && options[:hide_tooltip] != true
|
20
|
-
# Setting Tooltip format for display in Browsertooltip
|
21
|
-
# line breaks in unicode
|
22
|
-
tooltip = tooltip.gsub(/\n|\<br(\ )?(\/)?\>/, "
")
|
23
|
-
# single to double quotes
|
24
|
-
tooltip = tooltip.gsub("'", '"')
|
25
|
-
label_text << tooltip_box(tooltip)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
|
30
|
-
label_options = {}
|
31
|
-
label_options.merge!(:class => options[:class]) unless options[:class].blank?
|
32
|
-
label_options.merge!(:for => options[:for]) unless options[:for].blank?
|
33
|
-
label_options.merge!(:id => options[:id]) unless options[:id].blank?
|
34
|
-
|
35
|
-
return label(object_name, method, label_text.html_safe, label_options).html_safe
|
36
|
-
end
|
37
|
-
|
38
|
-
def labeled_text_field(object_name, method, options={})
|
39
|
-
|
40
|
-
if options[:id]
|
41
|
-
label_options = options.merge(:id => "label-#{options[:id]}")
|
42
|
-
else
|
43
|
-
label_options = options
|
44
|
-
end
|
45
|
-
|
46
|
-
html = label_tag_for(object_name, method, label_options)
|
47
|
-
if options[:password] && options.delete(:password)
|
48
|
-
html += password_field(object_name, method, options)
|
49
|
-
else
|
50
|
-
html += text_field(object_name, method, options)
|
51
|
-
end
|
52
|
-
return html.html_safe
|
53
|
-
end
|
54
|
-
|
55
|
-
def labeled_check_box(object_name, method, options={}, checked_value=1, unchecked_value=0)
|
56
|
-
method = method.to_s.to_sym
|
57
|
-
box_id = object_name.to_s+"_"+method.to_s
|
58
|
-
|
59
|
-
html = "<div class='cf labeled-check-box'>"
|
60
|
-
html += "<div class='checkbox-container'>#{check_box(object_name, method, options.merge!(:id => box_id), checked_value, unchecked_value)}</div>"
|
61
|
-
html += "<div class='checkbox-label-container'>#{label_tag_for(object_name, method, :label => options[:label], :tooltip => options[:tooltip], :class => "checkbox-label", :for => box_id, :errors => options[:errors])}</div>"
|
62
|
-
html += "</div>"
|
63
|
-
|
64
|
-
return html.html_safe
|
65
|
-
end
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
def labeled_radio_button(object_name, method, value, options = {})
|
70
|
-
options[:id] ||= "radio-#{method.to_s}-#{value.inspect}"
|
71
|
-
options[:label] ||= method.to_label
|
72
|
-
html = "<div class='cf labeled-radio-button'>"
|
73
|
-
html << radio_button(object_name, method, value, options.except(:label, :errors))
|
74
|
-
html << " "
|
75
|
-
html << label_tag_for(object_name, method, {:label => options[:label], :for => options[:id]})
|
76
|
-
html << "</div>"
|
77
|
-
return raw(html)
|
78
|
-
end
|
79
|
-
|
80
|
-
end
|
81
|
-
|
82
|
-
module FriendsLabeledFormBuilder
|
83
|
-
|
84
|
-
def label_tag_for(method, options = {})
|
85
|
-
@template.label_tag_for(@object_name, method, options)
|
86
|
-
end
|
87
|
-
|
88
|
-
|
89
|
-
def labeled_radio_button(method, value, options ={})
|
90
|
-
options[:checked] = (object.send(method) == value) if options[:checked].nil?
|
91
|
-
|
92
|
-
options[:class] ||= ""
|
93
|
-
options[:class] << " error" if ((!object.errors[method.to_sym].empty? && !object.new_record?) rescue false )
|
94
|
-
options[:errors] = ((object.errors[method.to_sym].empty? ? nil : object.errors[method.to_sym]) rescue false )
|
95
|
-
|
96
|
-
@template.labeled_radio_button(@object_name, method, value, options)
|
97
|
-
end
|
98
|
-
|
99
|
-
|
100
|
-
def labeled_check_box(method, options = {}, checked_value=1, unchecked_value=0)
|
101
|
-
|
102
|
-
options[:class] ||= ""
|
103
|
-
options[:class] << " error" if ((!object.errors[method.to_sym].empty? && !object.new_record?) rescue false )
|
104
|
-
options[:errors] = ((object.errors[method.to_sym].empty? ? nil : object.errors[method.to_sym]) rescue false )
|
105
|
-
|
106
|
-
options[:checked] ||= ((object.send(method) rescue false) || options[:checked])
|
107
|
-
@template.labeled_check_box(@object_name, method, options, checked_value, unchecked_value)
|
108
|
-
end
|
109
|
-
|
110
|
-
|
111
|
-
def labeled_text_field(method, options = {})
|
112
|
-
|
113
|
-
options[:value] ||= (object.send(method) rescue nil )
|
114
|
-
options[:class] ||= ""
|
115
|
-
options[:class] << " error" if ((!object.errors[method.to_sym].empty? && !object.new_record?) rescue false )
|
116
|
-
|
117
|
-
options[:errors] = ((object.errors[method.to_sym].empty? ? nil : object.errors[method.to_sym]) rescue false )
|
118
|
-
|
119
|
-
@template.labeled_text_field(@object_name, method, options)
|
120
|
-
end
|
121
|
-
|
122
|
-
end
|
123
|
-
|
124
|
-
|
data/app/models/friends_label.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# -*- encoding : utf-8 -*-
|
2
|
-
class FriendsLabel < ActiveRecord::Base
|
3
|
-
|
4
|
-
validates_uniqueness_of :attribute_name
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
labels = {}
|
9
|
-
|
10
|
-
if self.table_exists?
|
11
|
-
concept_labels = FriendsLabel.all
|
12
|
-
concept_labels.each {|l| labels.merge!(l.attribute_name => {:label => l.label, :tooltip => l.tooltip, :docu_tooltip => l.tooltip_docu})}
|
13
|
-
end
|
14
|
-
|
15
|
-
LABELS = labels
|
16
|
-
|
17
|
-
|
18
|
-
def is_unset?
|
19
|
-
return (!(self.attribute_name == self.label)).to_s
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
states = [
|
2
|
-
"Baden-Württemberg" ,
|
3
|
-
"Bayern" ,
|
4
|
-
"Berlin " ,
|
5
|
-
"Brandenburg" ,
|
6
|
-
"Bremen " ,
|
7
|
-
"Hamburg " ,
|
8
|
-
"Hessen" ,
|
9
|
-
"Mecklenburg-Vorpommern",
|
10
|
-
"Niedersachsen" ,
|
11
|
-
"Nordrhein-Westfalen" ,
|
12
|
-
"Rheinland-Pfalz" ,
|
13
|
-
"Saarland" ,
|
14
|
-
"Sachsen" ,
|
15
|
-
"Sachsen-Anhalt" ,
|
16
|
-
"Schleswig-Holstein" ,
|
17
|
-
"Thüringen"
|
18
|
-
]
|
19
|
-
|
20
|
-
GERMAN_STATES = states.map {|s| [s, states.index(s)+1]}
|
21
|
-
german_states_hash = {}
|
22
|
-
GERMAN_STATES.each {|s| german_states_hash.merge!(s[1] => s[0])}
|
23
|
-
|
24
|
-
GERMAN_STATES_HASH = german_states_hash
|
data/test/array_test.rb.orig
DELETED
@@ -1,221 +0,0 @@
|
|
1
|
-
require "test/unit"
|
2
|
-
require "array"
|
3
|
-
require "dummy_class"
|
4
|
-
|
5
|
-
class ArrayTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
#== Tests for .sum
|
8
|
-
def test_array_should_sum
|
9
|
-
assert_equal [1,2].sum, 3
|
10
|
-
end
|
11
|
-
|
12
|
-
#== Tests for .avg
|
13
|
-
def test_array_avg_with_numbers
|
14
|
-
test_array = [4,5]
|
15
|
-
|
16
|
-
assert_equal test_array.avg, 4.5
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_array_avg_with_attributes
|
20
|
-
test_array = []
|
21
|
-
test_array << DummyClass.new(:number => 4)
|
22
|
-
test_array << DummyClass.new(:number => 5)
|
23
|
-
|
24
|
-
assert_equal test_array.avg(:number), 4.5
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_array_avg_should_no_break_with_nil_and_emtpy
|
28
|
-
assert_equal [3,nil].avg, 3
|
29
|
-
assert_equal [].avg, 0
|
30
|
-
end
|
31
|
-
|
32
|
-
|
33
|
-
#== Tests for .array_to_hash
|
34
|
-
def test_array_should_make_to_hash
|
35
|
-
assert_equal [1,2].array_to_hash(""), {1 => "", 2 => ""}
|
36
|
-
assert_equal ["A","B"].array_to_hash(1), {"A" => 1, "B" => 1}
|
37
|
-
assert_equal ["A",nil].array_to_hash(1), {"A" => 1}
|
38
|
-
end
|
39
|
-
|
40
|
-
#== Tests for .to_structured_hash
|
41
|
-
def test_array_should_get_structured_with_symbol_and_nested_string
|
42
|
-
|
43
|
-
# Create Test Datas
|
44
|
-
test_data_row = []
|
45
|
-
test_data_row << DummyClass.new(:sec_id => 1, :name => "bla-1")
|
46
|
-
test_data_row << DummyClass.new(:sec_id => 1, :name => "bla-2")
|
47
|
-
test_data_row << DummyClass.new(:sec_id => 1, :name => "bla-3")
|
48
|
-
|
49
|
-
test_data_row << DummyClass.new(:sec_id => 2, :name => "blub-1")
|
50
|
-
test_data_row << DummyClass.new(:sec_id => 2, :name => "blub-2")
|
51
|
-
|
52
|
-
test_data_hash_sym = test_data_row.to_structured_hash(:sec_id)
|
53
|
-
test_data_hash_str = test_data_row.to_structured_hash("return_self.sec_id")
|
54
|
-
|
55
|
-
# Assertions
|
56
|
-
assert_equal test_data_hash_sym.keys.size, 2
|
57
|
-
assert_equal test_data_hash_sym[1].size, 3
|
58
|
-
assert_equal test_data_hash_sym[2].size, 2
|
59
|
-
|
60
|
-
assert_equal test_data_hash_sym, test_data_hash_str
|
61
|
-
end
|
62
|
-
|
63
|
-
#== Tests for .sum_with_attribute
|
64
|
-
def test_array_should_do_sum_with_attributes
|
65
|
-
|
66
|
-
test_array = []
|
67
|
-
test_array << DummyClass.new(:number => 4)
|
68
|
-
test_array << DummyClass.new(:number => 5)
|
69
|
-
|
70
|
-
# Using symbol
|
71
|
-
assert_equal test_array.sum_with_attribute(:number), 9
|
72
|
-
|
73
|
-
# Using nested string
|
74
|
-
assert_equal test_array.sum_with_attribute("return_self.number"), 9
|
75
|
-
|
76
|
-
# Using symbol with options
|
77
|
-
assert_equal test_array.sum_with_attribute(:get_number, :double => true), 18
|
78
|
-
|
79
|
-
# Using nested string with options
|
80
|
-
assert_equal test_array.sum_with_attribute("return_self.get_number", :double => true), 18
|
81
|
-
end
|
82
|
-
|
83
|
-
#== Tests for .count_for
|
84
|
-
def test_array_should_count_for_items
|
85
|
-
a1 = [1,2,3]
|
86
|
-
|
87
|
-
assert_equal a1.count_for(1), 1
|
88
|
-
|
89
|
-
a2 = %w(a a b c)
|
90
|
-
assert_equal a2.count_for("a"), 2
|
91
|
-
|
92
|
-
a3 = %w(a b c)
|
93
|
-
assert_equal a3.count_for("x"), 0
|
94
|
-
|
95
|
-
a4 = [1,:a, nil]
|
96
|
-
assert_equal a4.count_for(nil), 1
|
97
|
-
end
|
98
|
-
|
99
|
-
#== Tests for .next
|
100
|
-
def test_get_next_array_item_without_cycle
|
101
|
-
a = [1,2,3]
|
102
|
-
assert_equal a.next(2), 3
|
103
|
-
assert_equal a.next(3), 3
|
104
|
-
assert_equal a.next(4), 4
|
105
|
-
|
106
|
-
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_get_next_array_item_with_cycle
|
110
|
-
a = [1,2,3]
|
111
|
-
assert_equal a.next(3, :cycle => true), 1
|
112
|
-
assert_equal a.next(1, :cycle => true), 2
|
113
|
-
end
|
114
|
-
|
115
|
-
#== Tests for .isec
|
116
|
-
def test_array_must_isec_with_array
|
117
|
-
assert_raises ArgumentError do
|
118
|
-
[1,2,3].isec(3)
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
def test_array_isec
|
123
|
-
a1 = %w(a b c d)
|
124
|
-
a2 = %w(c d e f)
|
125
|
-
a3 = %w(a f x y)
|
126
|
-
a4 = %w(1 2 3 4)
|
127
|
-
|
128
|
-
assert_equal a1.isec(a2), %w(c d)
|
129
|
-
assert_equal (a1+a2).isec(a3), %w(a f)
|
130
|
-
assert_equal a3.isec(a4), []
|
131
|
-
end
|
132
|
-
|
133
|
-
#== Tests for .except
|
134
|
-
def test_array_except
|
135
|
-
a = [1,2,3, "a", "b"]
|
136
|
-
assert_equal a.except(1), [2,3, "a", "b"]
|
137
|
-
assert_equal a.except(1,2), [3, "a", "b"]
|
138
|
-
assert_equal a.except(1,"a"), [2,3, "b"]
|
139
|
-
end
|
140
|
-
|
141
|
-
#== Tests for .seperate
|
142
|
-
def test_array_seperation
|
143
|
-
{4 => (1..10).to_a, 25 => (1..100).to_a}.each do |n, array|
|
144
|
-
|
145
|
-
sep_array = array.seperate(n)
|
146
|
-
|
147
|
-
assert_equal sep_array.size, n
|
148
|
-
assert_equal sep_array.flatten, array
|
149
|
-
end
|
150
|
-
end
|
151
|
-
|
152
|
-
def test_array_should_seperate__arrays_correctly
|
153
|
-
# Fix for:
|
154
|
-
# [[1, "a"], [2, "b"], [3, "c"]].seperate(2).last
|
155
|
-
# => [[2, "b"], [[3, "c"]]] - Last Array is in an other array
|
156
|
-
|
157
|
-
assert_equal [[1, "a"], [2, "b"], [3, "c"]].seperate(2).last.last, [3,"c"]
|
158
|
-
assert_equal [[1, "a"], [2, "b"], [3, "c"], [4, "d"]].seperate(2).last.last, [4,"d"]
|
159
|
-
|
160
|
-
end
|
161
|
-
|
162
|
-
#== Tests for .stack
|
163
|
-
def test_array_stack
|
164
|
-
{4 => (1..10).to_a, 25 => (1..100).to_a}.each do |n, array|
|
165
|
-
|
166
|
-
sep_array = array.stack(n)
|
167
|
-
|
168
|
-
assert_equal sep_array.first.size, n
|
169
|
-
assert_equal sep_array.flatten, array
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
#== Tests for .to_sql
|
174
|
-
def test_array_to_sql
|
175
|
-
# Empty array is NULL
|
176
|
-
assert_equal [].to_sql, "(NULL)"
|
177
|
-
|
178
|
-
# Numbers should be unquoted
|
179
|
-
a = [1,2,4.5]
|
180
|
-
assert_no_match Regexp.new("'"), a.to_sql
|
181
|
-
assert_equal a.to_sql, "(1,2,4.5)"
|
182
|
-
|
183
|
-
<<<<<<< HEAD
|
184
|
-
# All others should be quoted
|
185
|
-
a = ["a", :b]
|
186
|
-
assert_match Regexp.new("'"), a.to_sql
|
187
|
-
assert_equal a.to_sql, "('a','b')"
|
188
|
-
end
|
189
|
-
|
190
|
-
#== Test interpolation
|
191
|
-
def test_array_should_interpolate
|
192
|
-
|
193
|
-
# First should not fail
|
194
|
-
assert_equal [nil,1,2].interpolate(nil), [0,1,2]
|
195
|
-
# These fail:
|
196
|
-
# assert_equal [nil, nil,1,2].interpolate(nil), [-1, 0,1,2]
|
197
|
-
|
198
|
-
|
199
|
-
# Last should not fail
|
200
|
-
assert_equal [1,2,3], [1,2,nil].interpolate(nil).map {|x| x.to_i }
|
201
|
-
# These fail:
|
202
|
-
# assert_equal [1,2,3,4], [1,2,nil,nil].interpolate(nil).map {|x| x.to_i }
|
203
|
-
|
204
|
-
# In The middle
|
205
|
-
assert_equal [1,2,3,4,5], [1,2,3,nil,5].interpolate(nil).map {|x| x.to_i }
|
206
|
-
assert_equal [1,2,3,4,5], [1,2,nil,nil,5].interpolate(nil).map {|x| x.to_i }
|
207
|
-
assert_equal [5,10,15,20,25], [5,nil,15,nil,25].interpolate(nil).map {|x| x.to_i }
|
208
|
-
assert_equal [5,10,15,20,25,30], [5,nil,15,nil,nil,30].interpolate(nil).map {|x| x.to_i }
|
209
|
-
end
|
210
|
-
|
211
|
-
=======
|
212
|
-
# All others should be unquoted
|
213
|
-
a = ["a", :b]
|
214
|
-
assert_match Regexp.new("'"), a.to_sql
|
215
|
-
assert_equal a.to_sql, "('a','b')"
|
216
|
-
end
|
217
|
-
>>>>>>> ad58e345c5de2638e34e44d69bb19b0ebebcd41e
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
end
|