hprevalence 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,119 @@
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
+ @system.available_items << Dvd.new( 'Fight Club', 22.1, fiction )
45
+ @system.available_items << Dvd.new( 'Monty Python and the Holy Grail', 15, comedy )
46
+
47
+ assert_equal 2, @system.available_items.length
48
+ assert_equal 2, @system.available_categories.length
49
+
50
+ load_engine
51
+
52
+ assert_equal 2, @system.available_items.length
53
+ assert_equal 2, @system.available_categories.length
54
+ end
55
+
56
+ def test_more_engine_loads
57
+ load_engine
58
+ assert_equal 0, @system.total_customers
59
+
60
+ fiction = Category.new('Fiction')
61
+ comedy = Category.new('Comedy')
62
+
63
+ @system.available_categories << fiction
64
+ @system.available_categories << comedy
65
+
66
+ assert_equal 0, @system.available_items.length
67
+ assert_equal 2, @system.available_categories.length
68
+
69
+ @system.available_items << Dvd.new( 'Fight Club', 22.1, fiction )
70
+ @system.available_items << Dvd.new( 'Monty Python and the Holy Grail', 15, comedy )
71
+
72
+ assert_equal 2, @system.available_items.length
73
+ assert_equal 2, @system.available_categories.length
74
+
75
+ load_engine
76
+
77
+ assert_equal 2, @system.available_items.length
78
+ assert_equal 2, @system.available_categories.length
79
+
80
+ horror = Category.new('Horror')
81
+ @system.available_categories << horror
82
+
83
+ @system.available_items << Dvd.new( 'Pet Sematary - 1989', 22.6, horror )
84
+ @system.available_items << Dvd.new( 'Falwty Towers - 12 episodes', 40.6, comedy )
85
+
86
+ assert_equal 4, @system.available_items.length
87
+ assert_equal 3, @system.available_categories.length
88
+
89
+ load_engine
90
+
91
+ assert_equal 4, @system.available_items.length
92
+ assert_equal 3, @system.available_categories.length
93
+
94
+ end
95
+
96
+ def test_depth_with_snapshot
97
+ assert_equal 0, @system.total_customers
98
+
99
+ fiction = Category.new('Fiction')
100
+ comedy = Category.new('Comedy')
101
+
102
+ @system.available_categories << fiction
103
+ @system.available_categories << comedy
104
+
105
+ @system.available_items << Dvd.new( 'Fight Club', 22.1, fiction )
106
+ @system.available_items << Dvd.new( 'Monty Python and the Holy Grail', 15, comedy )
107
+
108
+ assert_equal 2, @system.available_items.length
109
+ assert_equal 2, @system.available_categories.length
110
+
111
+ @engine.take_snapshot
112
+
113
+ load_engine
114
+
115
+ assert_equal 2, @system.available_items.length
116
+ assert_equal 2, @system.available_categories.length
117
+ end
118
+
119
+ end
@@ -0,0 +1,79 @@
1
+ $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
+
3
+ require 'hprevalence'
4
+ require 'test/unit'
5
+ require 'abstract_hprevalence_testcase'
6
+ require 'task_model'
7
+
8
+ class SimpleEngineTest < Test::Unit::TestCase
9
+ include AbstractHPrevalenceTestHelper
10
+
11
+ def setup
12
+ reset_dir 'store/engine_test'
13
+ ensure_dir
14
+ load_engine
15
+ end
16
+
17
+ def teardown
18
+ @engine.close
19
+ end
20
+
21
+ def load_engine
22
+ teardown unless @engine.nil?
23
+
24
+ @engine = HPrevalence::EngineBuilder.build( @target_dir ) {
25
+ TaskDatabase.new()
26
+ }
27
+
28
+ assert_not_nil @engine
29
+ @system = @engine.system
30
+ assert_not_nil @system
31
+ end
32
+
33
+ def test_add_task
34
+ task = Task.new( 'put the cat out', 'Before go sleep, put the cat out otherwise he will meow during the night' )
35
+ @engine.execute_command( AddTaskCommand.new( task ) )
36
+
37
+ assert_equal 1, @system.tasks.length
38
+
39
+ load_engine
40
+
41
+ assert_equal 1, @system.tasks.length
42
+ assert_equal 'put the cat out', @system.tasks[0].name
43
+ assert_equal 'Before go sleep, put the cat out otherwise he will meow during the night', @system.tasks[0].contents
44
+ end
45
+
46
+ def test_add_and_remove
47
+ task = Task.new( 'one', 'Before go sleep, put the cat out otherwise he will meow during the night' )
48
+ @engine.execute_command( AddTaskCommand.new( task ) )
49
+ task = Task.new( 'two', 'Brush your teeth before go to bed' )
50
+ @engine.execute_command( AddTaskCommand.new( task ) )
51
+
52
+ assert_equal 2, @system.tasks.length
53
+
54
+ @engine.execute_command( RemoveTaskCommand.new( 'two' ) )
55
+
56
+ assert_equal 1, @system.tasks.length
57
+
58
+ load_engine
59
+
60
+ assert_equal 1, @system.tasks.length
61
+ assert_equal 'one', @system.tasks[0].name
62
+ assert_equal 'Before go sleep, put the cat out otherwise he will meow during the night', @system.tasks[0].contents
63
+ end
64
+
65
+ def test_snapshot
66
+ task = Task.new( 'one', 'Before go sleep, put the cat out otherwise he will meow during the night' )
67
+ @engine.execute_command( AddTaskCommand.new( task ) )
68
+ task = Task.new( 'two', 'Brush your teeth before go to bed' )
69
+ @engine.execute_command( AddTaskCommand.new( task ) )
70
+
71
+ assert_equal 2, @system.tasks.length
72
+ @engine.take_snapshot
73
+
74
+ load_engine
75
+
76
+ assert_equal 2, @system.tasks.length
77
+ end
78
+
79
+ end
@@ -0,0 +1,74 @@
1
+ $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
+
3
+ class Task
4
+
5
+ attr_accessor :name, :contents
6
+
7
+ def initialize( name, contents )
8
+ @name, @contents = name, contents
9
+ end
10
+
11
+ end
12
+
13
+ class TaskDatabase
14
+ attr_reader :tasks
15
+ attr_accessor :priority_task
16
+
17
+ def initialize()
18
+ @tasks = []
19
+ @priority_task = nil
20
+ end
21
+
22
+ def add_task( task )
23
+ @tasks << task
24
+ end
25
+
26
+ def remove_task_by_name( name )
27
+ @tasks.delete_if { |task|
28
+ task.name == name
29
+ }
30
+ end
31
+
32
+ def find_task_by_name( name )
33
+ @tasks.find { |task|
34
+ task.name == name
35
+ }
36
+ end
37
+
38
+ end
39
+
40
+ class AddTaskCommand
41
+
42
+ def initialize( task )
43
+ @task = task
44
+ end
45
+
46
+ def execute( system )
47
+ system.add_task( @task )
48
+ end
49
+
50
+ end
51
+
52
+ class UpdateTaskCommand
53
+
54
+ def initialize( name, new_content )
55
+ @name, @new_content = name, new_content
56
+ end
57
+
58
+ def execute( system )
59
+ system.find_task_by_name( @name ).contents = new_content
60
+ end
61
+
62
+ end
63
+
64
+ class RemoveTaskCommand
65
+
66
+ def initialize( name )
67
+ @name = name
68
+ end
69
+
70
+ def execute( system )
71
+ system.remove_task_by_name( @name )
72
+ end
73
+
74
+ end
@@ -0,0 +1,95 @@
1
+ $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
+
3
+ require 'hprevalence'
4
+ require 'transparent'
5
+ require 'abstract_hprevalence_testcase'
6
+ require 'task_model'
7
+ require 'test/unit'
8
+
9
+ class TransparentTest < Test::Unit::TestCase
10
+ include AbstractHPrevalenceTestHelper
11
+
12
+ def setup
13
+ reset_dir 'store/transparent_test'
14
+ ensure_dir
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
+ TaskDatabase.new()
27
+ }
28
+
29
+ assert_not_nil @engine
30
+ @system = @engine.system
31
+ assert_not_nil @system
32
+ end
33
+
34
+ def test_proxy_registration
35
+ fake_proxy1 = ""
36
+ fake_proxy2 = 10
37
+
38
+ proxy_id1 = @engine.register_proxy( fake_proxy1 )
39
+ proxy_id2 = @engine.register_proxy( fake_proxy2 )
40
+
41
+ assert_not_nil proxy_id1
42
+ assert_not_nil proxy_id2
43
+
44
+ assert_equal fake_proxy1, @engine.proxy_by_id( proxy_id1 )
45
+ assert_equal fake_proxy2, @engine.proxy_by_id( proxy_id2 )
46
+ end
47
+
48
+ def test_simple_case
49
+ assert_equal 0, @system.tasks.length
50
+ @system.add_task( Task.new( 'first', 'content' ) )
51
+ @system.add_task( Task.new( 'second', 'content' ) )
52
+ assert_equal 2, @system.tasks.length
53
+
54
+ load_engine
55
+
56
+ assert_equal 2, @system.tasks.length
57
+ end
58
+
59
+ def test_simple_case_with_snapshot
60
+ assert_equal 0, @system.tasks.length
61
+ @system.add_task( Task.new( 'first', 'content' ) )
62
+ @system.add_task( Task.new( 'second', 'content' ) )
63
+ assert_equal 2, @system.tasks.length
64
+
65
+ @engine.take_snapshot
66
+
67
+ load_engine
68
+
69
+ assert_equal 2, @system.tasks.length
70
+ end
71
+
72
+ def test_several_snapshots
73
+ assert_equal 0, @system.tasks.length
74
+ @system.add_task( Task.new( 'first', 'content' ) )
75
+ @system.add_task( Task.new( 'second', 'content' ) )
76
+ assert_equal 2, @system.tasks.length
77
+
78
+ @engine.take_snapshot
79
+ @system.add_task( Task.new( 'third', 'content' ) )
80
+ @engine.take_snapshot
81
+ @system.add_task( Task.new( 'forth', 'content' ) )
82
+ @engine.take_snapshot
83
+
84
+ load_engine
85
+
86
+ assert_equal 4, @system.tasks.length
87
+ @system.remove_task_by_name( 'first' )
88
+ assert_equal 3, @system.tasks.length
89
+
90
+ load_engine
91
+
92
+ assert_equal 3, @system.tasks.length
93
+ end
94
+
95
+ end
metadata ADDED
@@ -0,0 +1,54 @@
1
+ --- !ruby/object:Gem::Specification
2
+ rubygems_version: 0.8.1
3
+ specification_version: 1
4
+ name: hprevalence
5
+ version: !ruby/object:Gem::Version
6
+ version: 0.1.0
7
+ date: 2004-10-24
8
+ summary: Ruby based prevalence engine.
9
+ require_paths:
10
+ - lib
11
+ author: Hamilton Verissimo
12
+ email: hammett@apache.org
13
+ homepage: http://www.digitalcraftsmen.com.br/~hammett
14
+ rubyforge_project: hprevalence
15
+ description: HPrevalence is an prevalence engine for Ruby which aims to provide non-intrusive capabilities to prevalent object models.
16
+ autorequire: hprevalence
17
+ default_executable:
18
+ bindir: bin
19
+ has_rdoc: false
20
+ required_ruby_version: !ruby/object:Gem::Version::Requirement
21
+ requirements:
22
+ -
23
+ - ">"
24
+ - !ruby/object:Gem::Version
25
+ version: 0.0.0
26
+ version:
27
+ platform: ruby
28
+ files:
29
+ - README
30
+ - "./rake.rb"
31
+ - "./rakefile.rb"
32
+ - "./lib/hprevalence.rb"
33
+ - "./lib/transparent.rb"
34
+ - "./lib/internal/command_logger.rb"
35
+ - "./lib/internal/iomanager.rb"
36
+ - "./lib/internal/object_graph.rb"
37
+ - "./lib/internal/serializer.rb"
38
+ - "./lib/internal/store_manager.rb"
39
+ - "./test/abstract_hprevalence_testcase.rb"
40
+ - "./test/command_logger_test.rb"
41
+ - "./test/default_model_serializer_test.rb"
42
+ - "./test/dvd_store_model.rb"
43
+ - "./test/file_io_manager_test.rb"
44
+ - "./test/natural_object_model_test.rb"
45
+ - "./test/simple_engine_test.rb"
46
+ - "./test/task_model.rb"
47
+ - "./test/transparent_module_test.rb"
48
+ test_files: []
49
+ rdoc_options: []
50
+ extra_rdoc_files: []
51
+ executables: []
52
+ extensions: []
53
+ requirements: []
54
+ dependencies: []