palm 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Binary file
@@ -0,0 +1,97 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+ require 'enumerator'
3
+
4
+ class TC_PdbTest < Test::Unit::TestCase
5
+ def setup
6
+ setup_paths
7
+ @pdb = Palm::PDB.new
8
+ @pdb.load_file(@path)
9
+ end
10
+
11
+ def teardown
12
+ File.delete(@temp_path) if File.exist? @temp_path
13
+ end
14
+
15
+ def test_meta_data
16
+ assert_equal 'Trac' , @pdb.creator
17
+ assert_equal 'HovD' , @pdb.type
18
+ assert_equal 'HovData' , @pdb.name
19
+ assert_equal 1 , @pdb.version
20
+ end
21
+
22
+ def test_times_should_be_humane
23
+ assert_instance_of(Time, @pdb.created_at)
24
+ assert_instance_of(Time, @pdb.modified_at)
25
+ assert_instance_of(Time, @pdb.backed_up_at)
26
+ end
27
+
28
+ def test_that_data_looks_right
29
+ records = @pdb.data
30
+ io = Palm::WabaStringIO.new(records.first.data)
31
+ assert_equal 072 ,io.get_byte
32
+ assert_equal 'Downtown I-5' ,io.get_string
33
+ assert_equal 'Albro Pl' ,io.get_string
34
+ assert_equal 1 ,io.get_byte
35
+ assert_equal 5 ,io.get_byte
36
+ assert_equal 5 ,io.get_byte
37
+ assert_equal 'none' ,io.get_string
38
+ assert_equal false ,io.get_bool
39
+ assert_equal 21 ,io.get_int
40
+ end
41
+
42
+ def test_writing_data
43
+ @pdb.write_file(@temp_path)
44
+
45
+ # Ensure the file was written
46
+ assert(File.exist?(@temp_path))
47
+ assert(File.size(@temp_path) > 0)
48
+
49
+ # Ensure the files are the same size
50
+ assert_equal File.size(@path), File.size(@temp_path)
51
+
52
+ # Ensure the files are identical
53
+ assert_equal IO.read(@path), IO.read(@temp_path)
54
+ end
55
+
56
+ def test_round_tripping_records
57
+ @pdb.write_file(@temp_path)
58
+ @loaded = Palm::PDB.new(@temp_path)
59
+
60
+ # Ensure they are not the same instance
61
+ assert(@pdb != @loaded)
62
+
63
+ # Test that the loaded data is the same as the original
64
+ binary_data = @pdb.data.map{|record| record.data}
65
+ loaded_data = @loaded.data.map{|record| record.data}
66
+
67
+ binary_data.zip(loaded_data) do |expected, loaded|
68
+ assert_equal expected, loaded
69
+ end
70
+
71
+ # Verify that the metadata is the same
72
+ assert_equal @pdb.creator , @loaded.creator
73
+ assert_equal @pdb.type , @loaded.type
74
+ assert_equal @pdb.name , @loaded.name
75
+ assert_equal @pdb.version , @loaded.version
76
+ end
77
+
78
+ def test_appending_records
79
+ bytes = "TEST BYTES"
80
+ r = Palm::RawRecord.new
81
+ r.data = bytes
82
+ @pdb.data << r
83
+ @pdb.write_file(@temp_path)
84
+ @loaded = Palm::PDB.new(@temp_path)
85
+ assert_equal bytes, @loaded.data.last.data
86
+ end
87
+
88
+ def test_removing_records
89
+ removed = @pdb.data.shift
90
+ expected = @pdb.data.first
91
+ @pdb.write_file(@temp_path)
92
+ @loaded = Palm::PDB.new(@temp_path)
93
+ assert_equal expected.data, @loaded.data.first.data
94
+ assert !@pdb.data.any?{|r| r.data == removed.data}
95
+ end
96
+
97
+ end
@@ -0,0 +1,7 @@
1
+ require 'test/unit'
2
+ require File.dirname(__FILE__) + '/../lib/palm'
3
+
4
+ def setup_paths
5
+ @path = (Dir.pwd =~ /test/) ? "HovData.pdb" : "test/HovData.pdb"
6
+ @temp_path = (Dir.pwd =~ /test/) ? "__tmp.pdb" : "test/__tmp.pdb"
7
+ end
@@ -0,0 +1,77 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestCollectionPointRecord < Palm::WabaRecord
4
+ class_id 072
5
+ field :corridor, :string
6
+ field :site, :string
7
+ field :direction, :byte
8
+ field :lanes, :byte
9
+ field :hov_lane, :byte
10
+ field :ramp_type, :string
11
+ field :express, :boolean
12
+ field :cp_id, :int
13
+ end
14
+
15
+ class TC_WabaDBTest < Test::Unit::TestCase
16
+ def setup
17
+ setup_paths
18
+ @pdb = Palm::WabaDB.new(TestCollectionPointRecord)
19
+ @pdb.load(open(@path))
20
+ end
21
+
22
+ def teardown
23
+ File.delete(@temp_path) if File.exist? @temp_path
24
+ end
25
+
26
+ def test_records_exist
27
+ assert @pdb.data.length > 0
28
+ end
29
+
30
+ def test_correct_class
31
+ @pdb.data.each do |record|
32
+ assert_instance_of TestCollectionPointRecord, record
33
+ end
34
+ end
35
+
36
+ def test_records_look_right
37
+ cp_ids = {}
38
+ @pdb.data.each do |record|
39
+ assert record.corridor.length > 0, "Corridor should not be empty"
40
+ assert record.site.length > 0, "Site should not be empty"
41
+ assert (1..4).include?(record.direction), "Direction should be 1-4"
42
+ assert (0..9).include?(record.lanes), "Lanes should be between 0 and 9, found #{record.lanes}"
43
+ assert (0..9).include?(record.hov_lane), "Hov Lane should be between 0 and 9, found #{record.hov_lane}"
44
+ assert !cp_ids[record.cp_id], "Each cp_id should be unique, #{cp_ids[record.cp_id].inspect} overlaps with #{record.inspect}"
45
+ cp_ids[record.cp_id] = record
46
+ end
47
+ end
48
+
49
+
50
+ def test_database_round_tripping
51
+ @pdb.write_file(@temp_path)
52
+ @loaded = Palm::WabaDB.new(TestCollectionPointRecord)
53
+ @loaded.load_file(@temp_path)
54
+
55
+ # Ensure they're two different objects
56
+ assert(@pdb != @loaded)
57
+
58
+ # Test that the loaded data is the same as the original
59
+ @pdb.data.zip(@loaded.data) do |expected, actual|
60
+ assert_equal expected.class.fields, actual.class.fields, "Records should have the same fields"
61
+ expected.class.fields.map{|f| f.name}.each do |name|
62
+ assert_equal expected.send(name), actual.send(name), "Field #{name} did not match"
63
+ end
64
+ end
65
+
66
+ end
67
+
68
+ def test_binary_equality
69
+ @pdb.write_file(@temp_path)
70
+
71
+ # Ensure the files are the same size
72
+ assert_equal File.size(@path), File.size(@temp_path)
73
+ # Ensure the files are identical
74
+ assert_equal IO.read(@path), IO.read(@temp_path)
75
+ end
76
+
77
+ end
@@ -0,0 +1,75 @@
1
+ require File.dirname(__FILE__) + '/test_helper.rb'
2
+
3
+ class TestWabaRecord < Palm::WabaRecord
4
+ class_id 072
5
+ field :corridor, :string
6
+ field :site, :string
7
+ field :direction, :byte
8
+ def caps_site
9
+ site.upcase
10
+ end
11
+ end
12
+
13
+
14
+ class TC_WabaRecords < Test::Unit::TestCase
15
+ def setup
16
+ @record = TestWabaRecord.new
17
+ end
18
+
19
+ def teardown
20
+ end
21
+
22
+ def test_record_has_expected_fields
23
+ assert_equal(3, TestWabaRecord.fields.length)
24
+ assert_equal [:corridor,:site,:direction], TestWabaRecord.fields.map{|f| f.name}
25
+ assert_equal [:string,:string,:byte], TestWabaRecord.fields.map{|f| f.type}
26
+ end
27
+
28
+ def test_fields_are_readable_and_writeable
29
+ fill_record(@record)
30
+ assert_record(@record)
31
+ end
32
+
33
+ # Odd things can happen when metaprogramming, lets make sure variables
34
+ # are stored in the right places
35
+ def test_records_dont_overlap
36
+ a = TestWabaRecord.new;
37
+ a.site = "A"
38
+ b = TestWabaRecord.new
39
+ b.site = "B"
40
+ assert_equal(a.site, "A")
41
+ assert_equal(b.site, "B")
42
+ end
43
+
44
+ def test_class_id_is_accesible
45
+ assert_equal(072, @record.class_id)
46
+ end
47
+
48
+ def test_io_round_tripping
49
+ s = ""
50
+ io = Palm::WabaStringIO.new(s, "w")
51
+ fill_record(@record)
52
+ @record.write(io)
53
+ @load_record = TestWabaRecord.new
54
+ @load_record.read( Palm::WabaStringIO.new(s, "r") )
55
+ assert_record(@load_record)
56
+ end
57
+
58
+ def test_class_can_have_helper_methods
59
+ fill_record(@record)
60
+ assert_equal "TEST SITE", @record.caps_site
61
+ end
62
+
63
+ def fill_record(record)
64
+ record.corridor = "I-5"
65
+ record.direction = 4
66
+ record.site = "Test Site"
67
+ end
68
+
69
+ def assert_record(record)
70
+ assert_equal("I-5", record.corridor)
71
+ assert_equal(4, record.direction)
72
+ assert_equal("Test Site", record.site)
73
+ end
74
+
75
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.11
3
+ specification_version: 1
4
+ name: palm
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.0.1
7
+ date: 2007-01-02 00:00:00 -08:00
8
+ summary: Pure Ruby library for reading and writing Palm PDB databases.
9
+ require_paths:
10
+ - lib
11
+ email: netghost@u.washington.edu
12
+ homepage: http://palm.rubyforge.org
13
+ rubyforge_project: palm
14
+ description: Pure Ruby library for reading and writing Palm PDB databases.
15
+ autorequire:
16
+ default_executable:
17
+ bindir: bin
18
+ has_rdoc: true
19
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
20
+ requirements:
21
+ - - ">"
22
+ - !ruby/object:Gem::Version
23
+ version: 0.0.0
24
+ version:
25
+ platform: ruby
26
+ signing_key:
27
+ cert_chain:
28
+ authors:
29
+ - Adam Sanderson
30
+ files:
31
+ - CHANGELOG.txt
32
+ - History.txt
33
+ - Manifest.txt
34
+ - README.txt
35
+ - Rakefile
36
+ - lib/palm.rb
37
+ - lib/palm/palm_record.rb
38
+ - lib/palm/palm_support.rb
39
+ - lib/palm/pdb.rb
40
+ - lib/palm/raw_record.rb
41
+ - lib/palm/version.rb
42
+ - lib/palm/waba_db.rb
43
+ - lib/palm/waba_io.rb
44
+ - lib/palm/waba_record.rb
45
+ - setup.rb
46
+ - test/HovData.pdb
47
+ - test/pdb_test.rb
48
+ - test/test_helper.rb
49
+ - test/waba_db_test.rb
50
+ - test/waba_records_test.rb
51
+ test_files:
52
+ - test/pdb_test.rb
53
+ - test/waba_db_test.rb
54
+ - test/waba_records_test.rb
55
+ rdoc_options: []
56
+
57
+ extra_rdoc_files: []
58
+
59
+ executables: []
60
+
61
+ extensions: []
62
+
63
+ requirements: []
64
+
65
+ dependencies:
66
+ - !ruby/object:Gem::Dependency
67
+ name: hoe
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Version::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: 1.1.6
74
+ version: