hprevalence 0.1.1 → 0.2.0

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.
@@ -1,96 +0,0 @@
1
-
2
- $:.unshift(File.dirname(__FILE__) + "/../lib/")
3
-
4
- require 'hprevalence'
5
- require 'transparent'
6
- require 'abstract_hprevalence_testcase'
7
- require 'dvd_store_model'
8
- require 'test/unit'
9
-
10
- class Item
11
- attr_accessor :sub_item
12
-
13
- def initialize( sub )
14
- @sub_item = sub
15
- end
16
- end
17
-
18
- class SampleDatabase
19
- include HPrevalence::Transparent::CustomBehavior
20
-
21
- attr_reader :list
22
- attr_proxy_attribute :list
23
- attr_proxy_method :create_item
24
-
25
- def initialize()
26
- @list = []
27
- end
28
-
29
- def create_item( sub = nil )
30
- Item.new( sub )
31
- end
32
- end
33
-
34
- class CircularReferenceTest < Test::Unit::TestCase
35
- include AbstractHPrevalenceTestHelper
36
-
37
- def setup
38
- reset_dir 'store/circular_test'
39
- ensure_dir
40
- load_engine
41
- end
42
-
43
- def teardown
44
- @engine.close
45
- end
46
-
47
- def load_engine
48
- teardown unless @engine.nil?
49
-
50
- @engine = HPrevalence::EngineBuilder.build_transparent( @target_dir ) {
51
- SampleDatabase.new()
52
- }
53
-
54
- assert_not_nil @engine
55
- @system = @engine.system
56
- assert_not_nil @system
57
- end
58
-
59
- def test_simple
60
- item = @system.create_item()
61
- @system.list << item
62
-
63
- load_engine
64
-
65
- assert_equal 1, @system.list.length
66
- end
67
-
68
- def test_circular
69
- item = @system.create_item()
70
- item.sub_item = item
71
-
72
- @system.list << item
73
-
74
- load_engine
75
-
76
- assert_equal 1, @system.list.length
77
- item = @system.list[0]
78
- assert_equal item, item.sub_item
79
- end
80
-
81
- def test_circular_with_snapshot
82
- item = @system.create_item()
83
- item.sub_item = item
84
-
85
- @system.list << item
86
-
87
- @engine.take_snapshot
88
- load_engine
89
-
90
- assert_equal 1, @system.list.length
91
- item = @system.list[0]
92
- assert_equal item, item.sub_item
93
- end
94
-
95
- end
96
-
@@ -1,97 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
-
3
- require 'transparent'
4
-
5
- class AbstractCollection
6
- include Enumerable
7
- include HPrevalence::Transparent::CustomBehavior
8
- attr_read_only :each
9
-
10
- def initialize()
11
- @list = []
12
- end
13
-
14
- def add( item )
15
- @list << item
16
- item
17
- end
18
-
19
- def each()
20
- @list.each { |item|
21
- yield(item)
22
- }
23
- end
24
-
25
- def length
26
- @list.length
27
- end
28
-
29
- end
30
-
31
- class DvdCollection < AbstractCollection
32
- # include HPrevalence::Transparent::CustomBehavior
33
-
34
- def initialize()
35
- super
36
- end
37
-
38
- end
39
-
40
- class DvdStore
41
- include HPrevalence::Transparent::CustomBehavior
42
-
43
- attr_reader :available_items
44
- attr_reader :available_categories
45
- attr_reader :customers
46
-
47
- attr_proxy_attribute :available_items, :available_categories, :customers
48
- attr_proxy_method :create_dvd
49
- attr_read_only :total_customers
50
-
51
- def initialize()
52
- @available_items = DvdCollection.new()
53
- @available_categories = []
54
- @customers = []
55
- end
56
-
57
- def total_customers
58
- @customers.length
59
- end
60
-
61
- def create_dvd( dvd )
62
- dvd
63
- end
64
-
65
- end
66
-
67
- class Category
68
- attr_reader :name
69
-
70
- def initialize( name )
71
- @name = name
72
- end
73
-
74
- end
75
-
76
- class Dvd
77
- attr_accessor :name, :price, :categories
78
-
79
- def initialize( name, price, *categories )
80
- @name, @price = name, price
81
- @categories = *categories.dup()
82
- end
83
-
84
- end
85
-
86
- class Customer
87
- attr_accessor :name, :items_bought, :prefered_categories
88
-
89
- def initialize( name )
90
- @name = name
91
- @items_bought = []
92
- @prefered_categories = []
93
- end
94
-
95
- end
96
-
97
-
@@ -1,143 +0,0 @@
1
-
2
- $:.unshift(File.dirname(__FILE__) + "/../lib/")
3
-
4
- require 'hprevalence'
5
- require 'transparent'
6
- require 'abstract_hprevalence_testcase'
7
- require 'dvd_store_model'
8
- require 'test/unit'
9
-
10
- class NaturalObjectModelTest < Test::Unit::TestCase
11
- include AbstractHPrevalenceTestHelper
12
-
13
- def setup
14
- reset_dir 'store/natural_test'
15
- ensure_dir
16
- load_engine
17
- end
18
-
19
- def teardown
20
- @engine.close
21
- end
22
-
23
- def load_engine
24
- teardown unless @engine.nil?
25
-
26
- @engine = HPrevalence::EngineBuilder.build_transparent( @target_dir ) {
27
- DvdStore.new()
28
- }
29
-
30
- assert_not_nil @engine
31
- @system = @engine.system
32
- assert_not_nil @system
33
- end
34
-
35
- def test_depth_1
36
- assert_equal 0, @system.total_customers
37
-
38
- fiction = Category.new('Fiction')
39
- comedy = Category.new('Comedy')
40
-
41
- @system.available_categories << fiction
42
- @system.available_categories << comedy
43
-
44
- dvd1 = @system.create_dvd( Dvd.new( 'Fight Club', 22.1, fiction ) )
45
- dvd2 = @system.create_dvd( Dvd.new( 'Monty Python and the Holy Grail', 15, comedy ) )
46
-
47
- @system.available_items.add( dvd1 )
48
- @system.available_items.add( dvd2 )
49
-
50
- assert_equal 2, @system.available_items.length
51
- assert_equal 2, @system.available_categories.length
52
-
53
- load_engine
54
-
55
- assert_equal 2, @system.available_items.length
56
- assert_equal 2, @system.available_categories.length
57
- end
58
-
59
- def test_read_only_each
60
- assert_equal 0, @system.total_customers
61
-
62
- fiction = Category.new('Fiction')
63
- comedy = Category.new('Comedy')
64
-
65
- @system.available_categories << fiction
66
- @system.available_categories << comedy
67
-
68
- dvd1 = @system.create_dvd( Dvd.new( 'Fight Club', 22.1, fiction ) )
69
- dvd2 = @system.create_dvd( Dvd.new( 'Monty Python and the Holy Grail', 15, comedy ) )
70
-
71
- @system.available_items.add( dvd1 )
72
- @system.available_items.add( dvd2 )
73
-
74
- @system.available_items.each() do |item|
75
-
76
- end
77
-
78
- end
79
-
80
- def test_more_engine_loads
81
- load_engine
82
- assert_equal 0, @system.total_customers
83
-
84
- fiction = Category.new('Fiction')
85
- comedy = Category.new('Comedy')
86
-
87
- @system.available_categories << fiction
88
- @system.available_categories << comedy
89
-
90
- assert_equal 0, @system.available_items.length
91
- assert_equal 2, @system.available_categories.length
92
-
93
- @system.available_items.add( Dvd.new( 'Fight Club', 22.1, fiction ) )
94
- @system.available_items.add( Dvd.new( 'Monty Python and the Holy Grail', 15, comedy ) )
95
-
96
- assert_equal 2, @system.available_items.length
97
- assert_equal 2, @system.available_categories.length
98
-
99
- load_engine
100
-
101
- assert_equal 2, @system.available_items.length
102
- assert_equal 2, @system.available_categories.length
103
-
104
- horror = Category.new('Horror')
105
- @system.available_categories << horror
106
-
107
- @system.available_items.add( Dvd.new( 'Pet Sematary - 1989', 22.6, horror ) )
108
- @system.available_items.add( Dvd.new( 'Fawlty Towers - 12 episodes', 40.6, comedy ) )
109
-
110
- assert_equal 4, @system.available_items.length
111
- assert_equal 3, @system.available_categories.length
112
-
113
- load_engine
114
-
115
- assert_equal 4, @system.available_items.length
116
- assert_equal 3, @system.available_categories.length
117
-
118
- end
119
-
120
- def test_depth_with_snapshot
121
- assert_equal 0, @system.total_customers
122
-
123
- fiction = Category.new('Fiction')
124
- comedy = Category.new('Comedy')
125
-
126
- @system.available_categories << fiction
127
- @system.available_categories << comedy
128
-
129
- @system.available_items.add( Dvd.new( 'Fight Club', 22.1, fiction ) )
130
- @system.available_items.add( Dvd.new( 'Monty Python and the Holy Grail', 15, comedy ) )
131
-
132
- assert_equal 2, @system.available_items.length
133
- assert_equal 2, @system.available_categories.length
134
-
135
- @engine.take_snapshot
136
-
137
- load_engine
138
-
139
- assert_equal 2, @system.available_items.length
140
- assert_equal 2, @system.available_categories.length
141
- end
142
-
143
- end
@@ -1,99 +0,0 @@
1
- $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
-
3
- require 'hprevalence'
4
- require 'transparent'
5
-
6
- class ModelBase
7
- include HPrevalence::Transparent::CustomBehavior
8
- attr_read_only :ident
9
-
10
- attr_reader :ident
11
- attr_accessor :name
12
-
13
- def initialize(name, id_val = name)
14
- @ident, @name = id_val, name
15
- end
16
- end
17
-
18
- class ModelArrayBase
19
- include Enumerable
20
- include HPrevalence::Transparent::CustomBehavior
21
- attr_read_only :[], :each, :length
22
-
23
- def initialize()
24
- @list = []
25
- end
26
-
27
- def add( item )
28
- @list << item
29
- end
30
-
31
- def each
32
- @list.each { |item| yield(item) }
33
- end
34
-
35
- def [](index)
36
- if (index.kind_of?(Integer))
37
- return @list[index]
38
- elsif (index.kind_of?(String))
39
- return find { |item| item.ident == index }
40
- end
41
- end
42
-
43
- def length
44
- @list.length
45
- end
46
-
47
- end
48
-
49
- class User < ModelBase
50
- attr_reader :password
51
-
52
- def initialize(name, password)
53
- super(name)
54
- @password = password
55
- end
56
- end
57
-
58
- class Project < ModelBase
59
- attr_reader :owner
60
-
61
- def initialize(name, idVal, owner)
62
- super(name, idVal)
63
- @owner = owner
64
- end
65
- end
66
-
67
- class UserCollection < ModelArrayBase
68
- def initialize()
69
- super
70
- end
71
- end
72
-
73
- class ProjectCollection < ModelArrayBase
74
- def initialize()
75
- super
76
- end
77
- end
78
-
79
- class ApplicationDatabase
80
- include HPrevalence::Transparent::CustomBehavior
81
-
82
- attr_reader :users, :projects
83
- attr_proxy_attribute :users, :projects
84
- attr_proxy_method :create_user, :create_project
85
-
86
- def initialize
87
- @users = UserCollection.new()
88
- @projects = ProjectCollection.new()
89
- end
90
-
91
- def create_user( login, pass )
92
- User.new( login, pass )
93
- end
94
-
95
- def create_project( name, id, user )
96
- Project.new( name, id, user )
97
- end
98
-
99
- end
@@ -1,54 +0,0 @@
1
-
2
- $:.unshift(File.dirname(__FILE__) + "/../lib/")
3
-
4
- require 'hprevalence'
5
- require 'transparent'
6
- require 'abstract_hprevalence_testcase'
7
- require 'project_model'
8
- require 'test/unit'
9
-
10
- class RestoringTest < Test::Unit::TestCase
11
- include AbstractHPrevalenceTestHelper
12
-
13
- def setup
14
- @target_dir = create_dir_name('store/fixed')
15
- load_engine
16
- end
17
-
18
- def teardown
19
- @engine.close
20
- end
21
-
22
- def load_engine
23
- teardown unless @engine.nil?
24
-
25
- @engine = HPrevalence::EngineBuilder.build_transparent( @target_dir ) {
26
- ApplicationDatabase.new()
27
- }
28
-
29
- assert_not_nil @engine
30
- @system = @engine.system
31
- assert_not_nil @system
32
- end
33
-
34
- def test_a
35
- teardown
36
- reset_dir 'store/fixed'
37
- setup
38
-
39
- user = @system.create_user( "test", "test" )
40
- @system.users.add( user ) unless @system.users.length != 0
41
-
42
- project = @system.create_project( 'cas', 'Castle', user )
43
- @system.projects.add( project )
44
-
45
- end
46
-
47
- def atest_aaa
48
-
49
- assert_equal 1, @system.users.length
50
- assert_equal 1, @system.projects.length
51
-
52
- end
53
-
54
- end