hprevalence 0.1.1 → 0.2.0

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