dohruby 0.2.1 → 0.3
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 +8 -0
- data/bin/config.rb +61 -0
- data/bin/create_database.rb +13 -6
- data/bin/gendata.rb +37 -0
- data/bin/migrate.rb +66 -0
- data/bin/{rcov-preprocess-files.rb → rcov_preprocess_files.rb} +1 -1
- data/bin/run_tests.rb +15 -5
- data/bin/update_rdoc.rb +28 -0
- data/dohapp_home +0 -0
- data/lib/doh/app/activate_database.rb +5 -12
- data/lib/doh/app/activate_logger.rb +29 -13
- data/lib/doh/app/config.rb +18 -0
- data/lib/doh/app/home.rb +3 -8
- data/lib/doh/app/init_runnable.rb +39 -8
- data/lib/doh/app/init_script.rb +19 -0
- data/lib/doh/app/init_unit_test.rb +4 -1
- data/lib/doh/app_no_stdio.rb +1 -1
- data/lib/doh/boot/app.rb +2 -0
- data/lib/doh/boot/app_pwd.rb +2 -0
- data/lib/doh/boot/find_dohruby.rb +5 -0
- data/lib/doh/boot/find_dohruby_18.rb +37 -0
- data/lib/doh/boot/find_dohruby_19.rb +58 -0
- data/lib/doh/boot/init_runnable.rb +2 -0
- data/lib/doh/boot/options.rb +2 -0
- data/lib/doh/core/array.rb +10 -0
- data/lib/doh/core/bigdecimal.rb +15 -0
- data/lib/doh/core/date.rb +73 -0
- data/lib/doh/core/deep_dup.rb +12 -0
- data/lib/doh/core/hash.rb +21 -0
- data/lib/doh/core/object.rb +6 -0
- data/lib/doh/core/require_local.rb +5 -0
- data/lib/doh/core/socket.rb +25 -0
- data/lib/doh/core/string.rb +34 -4
- data/lib/doh/core.rb +4 -1
- data/lib/doh/data/basic.rb +24 -19
- data/lib/doh/data/bulk.rb +28 -88
- data/lib/doh/data/catalog.rb +44 -0
- data/lib/doh/data/human.rb +50 -42
- data/lib/doh/data/make_global.rb +3 -0
- data/lib/doh/data/require_datagen.rb +2 -1
- data/lib/doh/home.rb +16 -0
- data/lib/doh/logger/email_acceptor.rb +6 -3
- data/lib/doh/logger/event.rb +19 -6
- data/lib/doh/logger/formatter.rb +22 -16
- data/lib/doh/logger/interface.rb +13 -0
- data/lib/doh/logger/iostream_acceptor.rb +3 -2
- data/lib/doh/logger/null_interface.rb +1 -0
- data/lib/doh/logger/proxy.rb +53 -0
- data/lib/doh/logger/socket_acceptor.rb +53 -0
- data/lib/doh/logger/socket_viewer.rb +64 -0
- data/lib/doh/logger/standard_interface.rb +46 -17
- data/lib/doh/logger/util.rb +18 -0
- data/lib/doh/logger.rb +2 -1
- data/lib/doh/logger_configure.rb +1 -1
- data/lib/doh/merb/db_session.rb +136 -0
- data/lib/doh/merb/form_helpers.rb +16 -0
- data/lib/doh/merb/login.rb +27 -12
- data/lib/doh/merb/merb_dohsession.rb +4 -0
- data/lib/doh/merb/notify_on_exception.rb +1 -1
- data/lib/doh/merb/session.rb +7 -0
- data/lib/doh/merb/source_ip.rb +10 -0
- data/lib/doh/merb.rb +0 -1
- data/lib/doh/mysql/abstract_row.rb +81 -0
- data/lib/doh/mysql/cache_connector.rb +11 -8
- data/lib/doh/mysql/connector_instance.rb +32 -5
- data/lib/doh/mysql/connector_util.rb +1 -0
- data/lib/doh/mysql/convert.rb +18 -0
- data/lib/doh/mysql/database_creator.rb +18 -5
- data/lib/doh/mysql/db_date.rb +2 -2
- data/lib/doh/mysql/default_type_guesser.rb +21 -4
- data/lib/doh/mysql/error.rb +3 -2
- data/lib/doh/mysql/handle.rb +144 -18
- data/lib/doh/mysql/hash_row.rb +13 -0
- data/lib/doh/mysql/load_sql.rb +1 -0
- data/lib/doh/mysql/metadata_util.rb +60 -19
- data/lib/doh/mysql/migrate.rb +122 -0
- data/lib/doh/mysql/migrate_check.rb +139 -0
- data/lib/doh/mysql/parse.rb +2 -0
- data/lib/doh/mysql/readonly_row.rb +11 -48
- data/lib/doh/mysql/require_dbtypes.rb +8 -0
- data/lib/doh/mysql/smart_row.rb +156 -0
- data/lib/doh/mysql/to_sql.rb +12 -0
- data/lib/doh/mysql/typed_row_builder.rb +4 -3
- data/lib/doh/mysql/types.rb +33 -0
- data/lib/doh/mysql/unquoted.rb +8 -0
- data/lib/doh/mysql/version.rb +102 -0
- data/lib/doh/mysql/virtual.rb +17 -0
- data/lib/doh/mysql/writable_row.rb +58 -0
- data/lib/doh/mysql.rb +2 -1
- data/lib/doh/paypal/paypal.rb +20 -0
- data/lib/doh/paypal/pdt.rb +14 -0
- data/lib/doh/paypal.rb +1 -0
- data/lib/doh/rails/form_helpers.rb +53 -0
- data/lib/doh/rails/login.rb +143 -0
- data/lib/doh/test/error_acceptor.rb +1 -1
- data/lib/doh/test/run_tests.rb +48 -43
- data/lib/doh/test/setup_once.rb +15 -0
- data/lib/doh/test/test_result.rb +7 -0
- data/lib/doh/unit_test.rb +6 -0
- data/lib/doh/util/banking_workday.rb +16 -12
- data/lib/doh/util/class_basename.rb +10 -0
- data/lib/doh/util/current_date.rb +18 -41
- data/lib/doh/util/doh_socket.rb +56 -0
- data/lib/doh/util/email.rb +18 -0
- data/lib/doh/util/file_edit.rb +64 -0
- data/lib/doh/util/http_helper.rb +107 -0
- data/lib/doh/util/internal_ip.rb +1 -1
- data/lib/doh/util/jsval.rb +13 -0
- data/lib/doh/util/post_hash.rb +14 -0
- data/lib/doh/util/xml_util.rb +48 -0
- data/test/core/tc_array.rb +12 -0
- data/test/core/tc_date.rb +53 -0
- data/test/core/tc_deep_dup.rb +69 -0
- data/test/core/tc_hash.rb +28 -0
- data/test/core/tc_socket.rb +30 -0
- data/test/core/tc_string.rb +15 -22
- data/test/local_tests.rb +3 -0
- data/test/local_tests_including_slow.rb +4 -0
- data/test/logger/tc_acceptor.rb +23 -6
- data/test/logger/tc_event.rb +1 -1
- data/test/logger/tc_formatter.rb +3 -2
- data/test/logger/tc_socket_viewer_acceptor.rb +48 -0
- data/test/mysql/001_down.sql +1 -0
- data/test/mysql/001_up.sql +4 -0
- data/test/mysql/002_down.sql +1 -0
- data/test/mysql/002_up.sql +1 -0
- data/test/mysql/tc_connector_instance.rb +8 -8
- data/test/mysql/tc_convert.rb +45 -0
- data/test/mysql/tc_handle.rb +94 -2
- data/test/mysql/tc_metadata_util.rb +50 -0
- data/test/mysql/tc_migrate.rb +50 -0
- data/test/mysql/tc_parse.rb +3 -1
- data/test/mysql/tc_readonly_row.rb +14 -10
- data/test/mysql/tc_smart_row.rb +22 -0
- data/test/mysql/tc_to_sql.rb +20 -0
- data/test/mysql/tc_types.rb +32 -0
- data/test/mysql/tc_unquoted.rb +1 -0
- data/test/mysql/tc_writable_row.rb +22 -0
- data/test/ts_core.rb +4 -0
- data/test/ts_logger.rb +4 -0
- data/test/ts_mysql.rb +6 -0
- data/test/ts_util.rb +6 -0
- data/test/util/slow_doh_socket.rb +102 -0
- data/test/util/tc_banking_workday.rb +18 -0
- data/test/util/tc_file_edit.rb +54 -0
- data/test/util/tc_jsval.rb +12 -0
- data/test/util/tc_to_display.rb +14 -0
- data/test/util/tc_xml_util.rb +17 -0
- metadata +130 -39
- data/README +0 -4
- data/lib/doh/merb/post_hash.rb +0 -26
- data/lib/doh/mysql/db_null.rb +0 -24
- data/lib/doh/mysql/hash_util.rb +0 -56
- data/test/mysql/tc_hash_util.rb +0 -23
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'db_unit_test')
|
|
2
|
+
require 'doh/mysql/migrate'
|
|
3
|
+
require 'doh/mysql/version'
|
|
4
|
+
|
|
5
|
+
module DohDb
|
|
6
|
+
|
|
7
|
+
class TC_migrate < Test::Unit::TestCase
|
|
8
|
+
def cleanup_tables
|
|
9
|
+
DohDb::query("DROP TABLE IF EXISTS version")
|
|
10
|
+
DohDb::query("DROP TABLE IF EXISTS migrate_test_version2")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def create_version_table
|
|
14
|
+
DohDb::query("CREATE TABLE IF NOT EXISTS version (version INT UNSIGNED NOT NULL) ENGINE=MyISAM")
|
|
15
|
+
DohDb::query("INSERT INTO version VALUES (0)")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_stuff
|
|
19
|
+
cleanup_tables
|
|
20
|
+
create_version_table
|
|
21
|
+
dbmg = DatabaseMigrator.new(DohDb::connector_instance.database, nil, File.dirname(__FILE__))
|
|
22
|
+
|
|
23
|
+
dbmg.update
|
|
24
|
+
table_info = DohDb::select("DESC migrate_test_version2")
|
|
25
|
+
assert_equal(2, table_info.size)
|
|
26
|
+
assert_equal(2, DohDb::current_database_version)
|
|
27
|
+
|
|
28
|
+
dbmg.make_version(1)
|
|
29
|
+
table_info = DohDb::select("DESC migrate_test_version2")
|
|
30
|
+
assert_equal(1, table_info.size)
|
|
31
|
+
assert_equal(1, DohDb::current_database_version)
|
|
32
|
+
|
|
33
|
+
dbmg.make_version(0)
|
|
34
|
+
assert_raise(Mysql::Error) {DohDb::query("DESC migrate_test_version2")}
|
|
35
|
+
assert(DohTest::pop_error.exception.to_s =~ /doesn't exist/)
|
|
36
|
+
assert_equal(0, DohDb::current_database_version)
|
|
37
|
+
|
|
38
|
+
dbmg.make_version(1)
|
|
39
|
+
table_info = DohDb::select("DESC migrate_test_version2")
|
|
40
|
+
assert_equal(1, table_info.size)
|
|
41
|
+
assert_equal(1, DohDb::current_database_version)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def teardown
|
|
45
|
+
cleanup_tables
|
|
46
|
+
super
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
end
|
data/test/mysql/tc_parse.rb
CHANGED
|
@@ -3,7 +3,7 @@ require 'doh/mysql/parse'
|
|
|
3
3
|
|
|
4
4
|
module DohDb
|
|
5
5
|
|
|
6
|
-
class
|
|
6
|
+
class TC_Parse < Test::Unit::TestCase
|
|
7
7
|
def test_bool
|
|
8
8
|
assert_equal(false, DohDb::parse_bool('0'))
|
|
9
9
|
assert_equal(true, DohDb::parse_bool('1'))
|
|
@@ -15,6 +15,7 @@ class TC_Convert < Test::Unit::TestCase
|
|
|
15
15
|
assert_equal(Date.new(2008,2,14), DohDb::parse_date('2008-02-14'))
|
|
16
16
|
assert_raise(ArgumentError) {DohDb::parse_date('20080214')}
|
|
17
17
|
assert_not_equal(Date.new(2008,2,14), DohDb::parse_date('2008-02-15'))
|
|
18
|
+
assert_equal(nil, DohDb::parse_date('0000-00-00'))
|
|
18
19
|
end
|
|
19
20
|
|
|
20
21
|
def test_datetime
|
|
@@ -22,6 +23,7 @@ class TC_Convert < Test::Unit::TestCase
|
|
|
22
23
|
assert_raise(ArgumentError) {DohDb::parse_datetime('zzzzzzzzzzzzzzzzzzz')}
|
|
23
24
|
assert_equal(DateTime.new(2008,2,14,10,20,30), DohDb::parse_datetime('2008-02-14 10:20:30'))
|
|
24
25
|
assert_not_equal(DateTime.new(2008,2,14,10,20,30), DohDb::parse_datetime('2008-02-14 10:20:31'))
|
|
26
|
+
assert_equal(nil, DohDb::parse_datetime('0000-00-00 00:00:00'))
|
|
25
27
|
end
|
|
26
28
|
|
|
27
29
|
def test_decimal
|
|
@@ -5,11 +5,11 @@ module DohDb
|
|
|
5
5
|
|
|
6
6
|
class TC_ReadOnlyRow < Test::Unit::TestCase
|
|
7
7
|
def setup
|
|
8
|
-
@row = ReadOnlyRow.new(['id', 'fname', 'lname', 'other'], [3, 'george', 'bob', nil])
|
|
8
|
+
@row = ReadOnlyRow.new(['id', 'fname', 'lname', 'other', 'flag', 'emptystr'], [3, 'george', 'bob', nil, true, ''])
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def test_keys
|
|
12
|
-
assert_equal(['id', 'fname', 'lname', 'other'], @row.keys)
|
|
12
|
+
assert_equal(['id', 'fname', 'lname', 'other', 'flag', 'emptystr'], @row.keys)
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def test_at_bad
|
|
@@ -50,32 +50,36 @@ class TC_ReadOnlyRow < Test::Unit::TestCase
|
|
|
50
50
|
|
|
51
51
|
def test_to_a
|
|
52
52
|
ary = @row.to_a
|
|
53
|
-
assert_equal(
|
|
53
|
+
assert_equal(6, ary.size)
|
|
54
54
|
assert_equal(['id', 3], ary.at(0))
|
|
55
55
|
assert_equal(['fname','george'], ary.at(1))
|
|
56
56
|
assert_equal(['lname', 'bob'], ary.at(2))
|
|
57
57
|
assert_equal(['other', nil], ary.at(3))
|
|
58
|
+
assert_equal(['flag', true], ary.at(4))
|
|
59
|
+
assert_equal(['emptystr', ''], ary.at(5))
|
|
58
60
|
end
|
|
59
61
|
|
|
60
62
|
def test_to_h
|
|
61
63
|
hsh = @row.to_h
|
|
62
|
-
assert_equal(
|
|
64
|
+
assert_equal(6, hsh.size)
|
|
63
65
|
assert_equal(3, hsh['id'])
|
|
64
66
|
assert_equal('george', hsh['fname'])
|
|
65
67
|
assert_equal('bob', hsh['lname'])
|
|
66
68
|
assert_equal(nil, hsh['other'])
|
|
67
69
|
end
|
|
68
70
|
|
|
69
|
-
def test_inspect
|
|
70
|
-
assert_equal(@row.inspect, @row.to_h.inspect)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
71
|
def test_method_missing
|
|
74
|
-
assert_equal(3, @row.id)
|
|
75
72
|
assert_equal('george', @row.fname)
|
|
76
73
|
assert_equal('bob', @row.lname)
|
|
77
74
|
assert_equal(nil, @row.other)
|
|
78
|
-
assert_raise(RuntimeError) {@row.
|
|
75
|
+
assert_raise(RuntimeError) {@row.this_field_doesnt_exist}
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_empty_field
|
|
79
|
+
assert(!@row.empty_field?('id'))
|
|
80
|
+
assert(@row.empty_field?('other'))
|
|
81
|
+
assert(@row.empty_field?('emptystr'))
|
|
82
|
+
assert(@row.empty_field?('unknown_field_name'))
|
|
79
83
|
end
|
|
80
84
|
end
|
|
81
85
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'doh/unit_test'
|
|
2
|
+
require 'doh/mysql/smart_row'
|
|
3
|
+
|
|
4
|
+
module DohDb
|
|
5
|
+
|
|
6
|
+
class TC_SmartRow < Test::Unit::TestCase
|
|
7
|
+
def test_display
|
|
8
|
+
row = SmartRow.new(['flag'], [true])
|
|
9
|
+
assert_equal('', row.display('this_field_doesnt_exist'))
|
|
10
|
+
assert_raise(RuntimeError) { row.display.this_field_doesnt_exist }
|
|
11
|
+
assert_equal('yes', row.display('flag'))
|
|
12
|
+
assert_equal('yes', row.display.flag)
|
|
13
|
+
row2 = row.dup
|
|
14
|
+
assert_equal(true, row2.flag)
|
|
15
|
+
row2.flag = false
|
|
16
|
+
assert_equal(false, row2.flag)
|
|
17
|
+
assert_equal(true, row.flag)
|
|
18
|
+
assert_raise(RuntimeError) { row.this_field_doesnt_exist }
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/mysql/to_sql'
|
|
3
|
+
|
|
4
|
+
module DohDb
|
|
5
|
+
|
|
6
|
+
class TC_to_sql < Test::Unit::TestCase
|
|
7
|
+
def test_stuff
|
|
8
|
+
assert_equal('"blah"', 'blah'.to_sql)
|
|
9
|
+
assert_equal('NULL', nil.to_sql)
|
|
10
|
+
assert_equal('3', 3.to_sql)
|
|
11
|
+
assert_equal('"2008-09-24 09:30:04"', DateTime.new(2008,9,24,9,30,4).to_sql)
|
|
12
|
+
assert_equal('1', true.to_sql)
|
|
13
|
+
assert_equal('0', false.to_sql)
|
|
14
|
+
assert_equal('10.0', BigDecimal.new('10').to_sql)
|
|
15
|
+
assert_equal('("a","b","c")', ['a', 'b', 'c'].to_sql)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
end
|
|
20
|
+
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'db_unit_test')
|
|
2
|
+
require 'doh/mysql/types'
|
|
3
|
+
|
|
4
|
+
module DohDb
|
|
5
|
+
|
|
6
|
+
class ConvertToString
|
|
7
|
+
def self.build(field, value)
|
|
8
|
+
value.to_s
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
class TC_Types < Test::Unit::TestCase
|
|
13
|
+
def test_stuff
|
|
14
|
+
dbh = DohDb::request_handle
|
|
15
|
+
tbl = "doh_mysql_types_stuff_test"
|
|
16
|
+
tbl2 = "island.doh_mysql_types_stuff_another_test"
|
|
17
|
+
DohDb::query("CREATE TEMPORARY TABLE #{tbl} (amount INT)")
|
|
18
|
+
DohDb::query("INSERT INTO #{tbl} SET amount = NULL")
|
|
19
|
+
assert_equal(nil, DohDb::select_field("SELECT amount FROM #{tbl}"))
|
|
20
|
+
DohDb::query("UPDATE #{tbl} SET amount = 5")
|
|
21
|
+
assert_equal(5, DohDb::select_field("SELECT amount FROM #{tbl}"))
|
|
22
|
+
|
|
23
|
+
DohDb::query("CREATE TEMPORARY TABLE #{tbl2} (other INT)")
|
|
24
|
+
DohDb::query("INSERT INTO #{tbl2} SET other = 7")
|
|
25
|
+
assert_equal(5, DohDb::select_field("SELECT amount, other FROM #{tbl}, #{tbl2}"))
|
|
26
|
+
|
|
27
|
+
DohDb::register_column_type(DohDb::connector_instance.database, tbl, 'amount', ConvertToString)
|
|
28
|
+
assert_equal('5', DohDb::select_field("SELECT amount FROM #{tbl}"))
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
end
|
data/test/mysql/tc_unquoted.rb
CHANGED
|
@@ -9,6 +9,7 @@ class TC_Unquoted < Test::Unit::TestCase
|
|
|
9
9
|
assert_equal('blah', Unquoted.new('blah'))
|
|
10
10
|
assert_equal('blah', Unquoted.new('blah').to_s)
|
|
11
11
|
assert_equal('blah', Unquoted.new('blah').to_sql)
|
|
12
|
+
assert_equal('SELECT * FROM blah WHERE smoe = NULL', "SELECT * FROM blah WHERE smoe = #{DohDb::NULL.to_sql}")
|
|
12
13
|
end
|
|
13
14
|
end
|
|
14
15
|
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'doh/unit_test'
|
|
2
|
+
require 'doh/mysql/writable_row'
|
|
3
|
+
|
|
4
|
+
module DohDb
|
|
5
|
+
|
|
6
|
+
class TC_WritableRow < Test::Unit::TestCase
|
|
7
|
+
def test_bracket_assign_not_mutate
|
|
8
|
+
keys = []; values = []
|
|
9
|
+
row = WritableRow.new(keys, values)
|
|
10
|
+
keys.push('blah')
|
|
11
|
+
values.push('blee')
|
|
12
|
+
assert(row.keys.empty?)
|
|
13
|
+
assert(row.values.empty?)
|
|
14
|
+
row['frog'] = 'chicken'
|
|
15
|
+
assert_equal(['blah'], keys)
|
|
16
|
+
assert_equal(['blee'], values)
|
|
17
|
+
assert_equal(['frog'], row.keys)
|
|
18
|
+
assert_equal(['chicken'], row.values)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
data/test/ts_core.rb
ADDED
data/test/ts_logger.rb
ADDED
data/test/ts_mysql.rb
ADDED
data/test/ts_util.rb
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/util/doh_socket'
|
|
3
|
+
require 'doh/util/time_util'
|
|
4
|
+
module Doh
|
|
5
|
+
|
|
6
|
+
#single client timeout server
|
|
7
|
+
class TimeoutServer
|
|
8
|
+
attr_accessor :shutdown
|
|
9
|
+
attr_reader :listening
|
|
10
|
+
def initialize(port)
|
|
11
|
+
@port = port
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def run
|
|
15
|
+
@server = TCPServer.new(nil, @port)
|
|
16
|
+
@listening = true
|
|
17
|
+
loop do
|
|
18
|
+
while (!select([@server], nil, nil, 0.1) && !@shutdown) do
|
|
19
|
+
end
|
|
20
|
+
return if !@shutdown
|
|
21
|
+
|
|
22
|
+
session = @server.accept
|
|
23
|
+
request = session.gets
|
|
24
|
+
sleep request.to_i
|
|
25
|
+
session.write("slept: #{request.to_i} seconds -- sleeping another #{request.to_i} before sending the newline")
|
|
26
|
+
sleep request.to_i
|
|
27
|
+
session.write("\n")
|
|
28
|
+
session.close
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
class TC_slow_doh_socket < Test::Unit::TestCase
|
|
34
|
+
def test_stuff
|
|
35
|
+
server = TimeoutServer.new(3233)
|
|
36
|
+
thread = Thread.new do
|
|
37
|
+
server.run
|
|
38
|
+
end
|
|
39
|
+
while !server.listening
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
subtest_timeout_block
|
|
43
|
+
subtest_timed_readln
|
|
44
|
+
subtest_combination
|
|
45
|
+
|
|
46
|
+
server.shutdown = true
|
|
47
|
+
thread.join
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def subtest_timeout_block
|
|
51
|
+
time_took = Doh::time_block do
|
|
52
|
+
assert_raises(TimeoutError) do
|
|
53
|
+
DohSocket::timeout_block(0.2) do
|
|
54
|
+
sock = DohSocket.new('127.0.0.1', 3233)
|
|
55
|
+
sock.write("1\n")
|
|
56
|
+
sock.timed_readln
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
assert((time_took - 0.2).abs < 0.001)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def subtest_timed_readln
|
|
64
|
+
time_took = Doh::time_block do
|
|
65
|
+
assert_raises(TimeoutError) do
|
|
66
|
+
sock = DohSocket.new('127.0.0.1', 3233)
|
|
67
|
+
sock.timeout = 0.2
|
|
68
|
+
sock.write("1\n")
|
|
69
|
+
sock.timed_readln
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
assert((time_took - 0.2).abs < 0.001)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def subtest_combination
|
|
77
|
+
time_took = Doh::time_block do
|
|
78
|
+
assert_raises(TimeoutError) do
|
|
79
|
+
DohSocket::timeout_block(1) do
|
|
80
|
+
time2_took = Doh::time_block do
|
|
81
|
+
assert_raises(TimeoutError) do
|
|
82
|
+
sock = DohSocket.new('127.0.0.1', 3233)
|
|
83
|
+
sock.timeout = 0.3
|
|
84
|
+
sock.write("4\n")
|
|
85
|
+
sock.timed_readln
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
assert((time2_took - 0.3).abs < 0.001)
|
|
89
|
+
|
|
90
|
+
sock = DohSocket.new('127.0.0.1', 3233)
|
|
91
|
+
sock.timeout = 1
|
|
92
|
+
sock.write("4\n")
|
|
93
|
+
sock.timed_readln
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
assert((time_took - 1).abs < 0.001)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
end
|
|
@@ -3,6 +3,18 @@ require 'doh/util/banking_workday'
|
|
|
3
3
|
module Doh
|
|
4
4
|
|
|
5
5
|
class TC_banking_workday < Test::Unit::TestCase
|
|
6
|
+
# taken from http://www.federalreserve.gov/releases/k8/default.htm
|
|
7
|
+
@@federal_reserve_holidays =
|
|
8
|
+
[Date.new(2007, 1, 1), Date.new(2007, 1, 15), Date.new(2007, 2, 19), Date.new(2007, 5, 28), Date.new(2007, 7, 4), Date.new(2007, 9, 3), Date.new(2007, 10, 8), Date.new(2007, 11, 12), Date.new(2007, 11, 22), Date.new(2007, 12, 25),
|
|
9
|
+
Date.new(2008, 1, 1), Date.new(2008, 1, 21), Date.new(2008, 2, 18), Date.new(2008, 5, 26), Date.new(2008, 7, 4), Date.new(2008, 9, 1), Date.new(2008, 10, 13), Date.new(2008, 11, 11), Date.new(2008, 11, 27), Date.new(2008, 12, 25),
|
|
10
|
+
Date.new(2009, 1, 1), Date.new(2009, 1, 19), Date.new(2009, 2, 16), Date.new(2009, 5, 25), Date.new(2009, 7, 4), Date.new(2009, 9, 7), Date.new(2009, 10, 12), Date.new(2009, 11, 11), Date.new(2009, 11, 26), Date.new(2009, 12, 25),
|
|
11
|
+
Date.new(2010, 1, 1), Date.new(2010, 1, 18), Date.new(2010, 2, 15), Date.new(2010, 5, 31), Date.new(2010, 7, 5), Date.new(2010, 9, 6), Date.new(2010, 10, 11), Date.new(2010, 11, 11), Date.new(2010, 11, 25), Date.new(2010, 12, 25),
|
|
12
|
+
Date.new(2011, 1, 1), Date.new(2011, 1, 17), Date.new(2011, 2, 21), Date.new(2011, 5, 30), Date.new(2011, 7, 4), Date.new(2011, 9, 5), Date.new(2011, 10, 10), Date.new(2011, 11, 11), Date.new(2011, 11, 24), Date.new(2011, 12, 26),
|
|
13
|
+
Date.new(2012, 1, 2), Date.new(2012, 1, 16), Date.new(2012, 2, 20), Date.new(2012, 5, 28), Date.new(2012, 7, 4), Date.new(2012, 9, 3), Date.new(2012, 10, 8), Date.new(2012, 11, 12), Date.new(2012, 11, 22), Date.new(2012, 12, 25),
|
|
14
|
+
Date.new(2013, 1, 1), Date.new(2013, 1, 21), Date.new(2013, 2, 18), Date.new(2013, 5, 27), Date.new(2013, 7, 4), Date.new(2013, 9, 2), Date.new(2013, 10, 14), Date.new(2013, 11, 11), Date.new(2013, 11, 28), Date.new(2013, 12, 25),
|
|
15
|
+
Date.new(2014, 1, 1), Date.new(2014, 1, 20), Date.new(2014, 2, 17), Date.new(2014, 5, 26), Date.new(2014, 7, 4), Date.new(2014, 9, 1), Date.new(2014, 10, 13), Date.new(2014, 11, 11), Date.new(2014, 11, 27), Date.new(2014, 12, 25)
|
|
16
|
+
]
|
|
17
|
+
|
|
6
18
|
def test_forward_banking_workday
|
|
7
19
|
assert_equal(Date.new(2007, 2, 2).to_s, Date.new(2007, 2, 1).forward_banking_workday.to_s)
|
|
8
20
|
assert_equal(Date.new(2007, 2, 5).to_s, Date.new(2007, 2, 2).forward_banking_workday.to_s)
|
|
@@ -22,6 +34,12 @@ class TC_banking_workday < Test::Unit::TestCase
|
|
|
22
34
|
def test_banking_holiday
|
|
23
35
|
assert(Date.new(2007, 2, 19).banking_holiday?)
|
|
24
36
|
end
|
|
37
|
+
|
|
38
|
+
def test_all_federal_reserve_scraped
|
|
39
|
+
@@federal_reserve_holidays.each do |day|
|
|
40
|
+
assert(!day.banking_workday?)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
25
43
|
end
|
|
26
44
|
|
|
27
45
|
end
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/util/file_edit'
|
|
3
|
+
|
|
4
|
+
module Doh
|
|
5
|
+
|
|
6
|
+
class TC_file_edit < Test::Unit::TestCase
|
|
7
|
+
def setup
|
|
8
|
+
@fname = '/tmp/file_edit_test.out'
|
|
9
|
+
file = File.open(@fname, 'w+')
|
|
10
|
+
@line1 = "line1 test"
|
|
11
|
+
@line2 = "test line2"
|
|
12
|
+
@line3 = "yet another line -- number 3"
|
|
13
|
+
file << @line1 << "\n"
|
|
14
|
+
file << @line2 << "\n"
|
|
15
|
+
file << @line3 << "\n"
|
|
16
|
+
file.close
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def readfile
|
|
20
|
+
File.open(@fname, 'r').to_a.collect { |line| line[0..-2]}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_delete
|
|
24
|
+
assert_equal([@line1, @line2, @line3], readfile)
|
|
25
|
+
file = FileEdit.new(@fname)
|
|
26
|
+
file.delete
|
|
27
|
+
file.save
|
|
28
|
+
assert_equal([@line2, @line3], readfile)
|
|
29
|
+
file.move_after(/line2/)
|
|
30
|
+
file.delete
|
|
31
|
+
file.save
|
|
32
|
+
assert_equal([@line2], readfile)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_delete2
|
|
36
|
+
assert_equal([@line1, @line2, @line3], readfile)
|
|
37
|
+
file = FileEdit.new(@fname)
|
|
38
|
+
file.move_after(/line1/)
|
|
39
|
+
file.delete(2)
|
|
40
|
+
file.save
|
|
41
|
+
assert_equal([@line1], readfile)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def test_insert
|
|
45
|
+
file = FileEdit.new(@fname)
|
|
46
|
+
file.move_before(/line2/)
|
|
47
|
+
file.insert(@line3, @line2)
|
|
48
|
+
file.save
|
|
49
|
+
assert_equal([@line1, @line3, @line2, @line2, @line3], readfile)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
end
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/util/to_display'
|
|
3
|
+
|
|
4
|
+
module Doh
|
|
5
|
+
|
|
6
|
+
class TC_util_to_display < Test::Unit::TestCase
|
|
7
|
+
def test_to_display
|
|
8
|
+
assert_equal('', nil.to_display)
|
|
9
|
+
assert_equal('no', false.to_display)
|
|
10
|
+
assert_equal('yes', true.to_display)
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'test/unit'
|
|
2
|
+
require 'doh/util/xml_util'
|
|
3
|
+
module Doh
|
|
4
|
+
|
|
5
|
+
class TC_xml_util < Test::Unit::TestCase
|
|
6
|
+
def setup
|
|
7
|
+
@hash = {'person' => {'phones' => {'home' => '5552222', 'cell' => '5553333'}, 'name' => {'first' => 'john', 'last' => 'doe'}, 'height' => '184cm', 'weight' => '73kg'}}
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_stuff
|
|
11
|
+
xml = Doh::hash_to_xml(@hash)
|
|
12
|
+
hash = Doh::xml_to_hash(xml)
|
|
13
|
+
assert_equal(@hash, hash)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|