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.
@@ -2,10 +2,15 @@
2
2
  module HPrevalence
3
3
 
4
4
  class StorageManager
5
-
6
- def initialize( target_dir, iomanager = FileIOManager.new(target_dir), logger = CommandLogger.new(iomanager), model_serializer = DefaultModelSerializer.new(iomanager) )
7
- @target_dir, @model_serializer = target_dir, model_serializer
8
- @logger = logger
5
+
6
+ def initialize(
7
+ target_dir,
8
+ iomanager = FileIOManager.new(target_dir),
9
+ marshaller = DefaultMarshaller.new(),
10
+ model_serializer = DefaultModelSerializer.new(iomanager, marshaller) )
11
+
12
+ @model_serializer = model_serializer
13
+ @logger = CommandLogger.new(iomanager, marshaller)
9
14
  @comand_store = nil
10
15
  end
11
16
 
@@ -50,25 +55,5 @@ module HPrevalence
50
55
  end
51
56
 
52
57
  end
53
-
54
- #
55
- #
56
- #
57
- class TransparentStorageManager < StorageManager
58
-
59
- def initialize( engine, target_dir, iomanager = FileIOManager.new(target_dir), logger = CommandLogger.new(iomanager), model_serializer = DefaultModelSerializer.new(iomanager) )
60
- super( target_dir, iomanager, logger, model_serializer )
61
- @engine = engine
62
- end
63
58
 
64
- def restore( system )
65
- @engine.within_engine {
66
- system = restore_snapshot( system )
67
- restore_commands( system )
68
- }
69
- system
70
- end
71
-
72
- end
73
-
74
59
  end
@@ -19,7 +19,7 @@ Rake::TestTask.new("test_units") { |t|
19
19
  t.verbose = true
20
20
  }
21
21
 
22
- PKG_VERSION = '0.1.1'
22
+ PKG_VERSION = '0.2.0'
23
23
  PKG_FILES = FileList['README', './**/*.rb']
24
24
 
25
25
  spec = Gem::Specification.new do |s|
@@ -0,0 +1,10 @@
1
+
2
+ require 'tkclass'
3
+
4
+ root = TkRoot.new() { title "More Widgets" }
5
+ frame = TkFrame.new(root).pack("side"=>"right")
6
+ buttons = TkFrame.new(frame).pack("side"=>"bottom")
7
+ load = TkButton.new(buttons) { text "Load" }
8
+ save = TkButton.new(buttons) { text "Save" }
9
+ TkGrid.configure(load, save)
10
+ root.mainloop()
@@ -1,22 +1,17 @@
1
- $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
1
 
3
2
  class Task
4
-
5
3
  attr_accessor :name, :contents
6
4
 
7
5
  def initialize( name, contents )
8
6
  @name, @contents = name, contents
9
7
  end
10
-
11
8
  end
12
9
 
13
10
  class TaskDatabase
14
11
  attr_reader :tasks
15
- attr_accessor :priority_task
16
12
 
17
13
  def initialize()
18
14
  @tasks = []
19
- @priority_task = nil
20
15
  end
21
16
 
22
17
  def add_task( task )
@@ -38,11 +33,9 @@ class TaskDatabase
38
33
  task.name == name
39
34
  }
40
35
  end
41
-
42
36
  end
43
37
 
44
38
  class AddTaskCommand
45
-
46
39
  def initialize( task )
47
40
  @task = task
48
41
  end
@@ -50,11 +43,9 @@ class AddTaskCommand
50
43
  def execute( system )
51
44
  system.add_task( @task )
52
45
  end
53
-
54
46
  end
55
47
 
56
48
  class UpdateTaskCommand
57
-
58
49
  def initialize( name, new_content )
59
50
  @name, @new_content = name, new_content
60
51
  end
@@ -62,11 +53,9 @@ class UpdateTaskCommand
62
53
  def execute( system )
63
54
  system.find_task_by_name( @name ).contents = new_content
64
55
  end
65
-
66
56
  end
67
57
 
68
58
  class RemoveTaskCommand
69
-
70
59
  def initialize( name )
71
60
  @name = name
72
61
  end
@@ -74,5 +63,4 @@ class RemoveTaskCommand
74
63
  def execute( system )
75
64
  system.remove_task_by_name( @name )
76
65
  end
77
-
78
66
  end
@@ -0,0 +1,36 @@
1
+
2
+ class Task
3
+ attr_accessor :name, :contents
4
+
5
+ def initialize( name, contents )
6
+ @name, @contents = name, contents
7
+ end
8
+ end
9
+
10
+ class TaskDatabase
11
+ attr_reader :tasks
12
+
13
+ def initialize()
14
+ @tasks = []
15
+ end
16
+
17
+ def add_task( task )
18
+ @tasks << task
19
+ end
20
+
21
+ def add( name, contents )
22
+ add_task( Task.new(name, contents) )
23
+ end
24
+
25
+ def remove_task_by_name( name )
26
+ @tasks.delete_if { |task|
27
+ task.name == name
28
+ }
29
+ end
30
+
31
+ def find_task_by_name( name )
32
+ @tasks.find { |task|
33
+ task.name == name
34
+ }
35
+ end
36
+ end
@@ -2,6 +2,7 @@ $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
2
 
3
3
  require 'internal/command_logger'
4
4
  require 'internal/iomanager'
5
+ require 'internal/marshallers/default'
5
6
  require 'abstract_hprevalence_testcase'
6
7
  require 'test/unit'
7
8
 
@@ -10,16 +11,11 @@ class CommandLoggerTest < Test::Unit::TestCase
10
11
 
11
12
  def setup
12
13
  reset_dir 'store/file_command_test'
13
-
14
- @fc = CommandLogger.new( FileIOManager.new( @target_dir ) )
14
+ @fc = CommandLogger.new( FileIOManager.new( @target_dir ), DefaultMarshaller.new() )
15
15
  end
16
16
 
17
17
  def test_available_logs
18
18
  assert_equal 0, @fc.log_files.length
19
-
20
- ensure_dir
21
-
22
- assert_equal 0, @fc.log_files.length
23
19
  end
24
20
 
25
21
  def test_new_log
@@ -2,9 +2,10 @@ $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
2
 
3
3
  require 'internal/iomanager'
4
4
  require 'internal/serializer'
5
+ require 'internal/marshallers/default'
5
6
  require 'abstract_hprevalence_testcase'
6
7
  require 'test/unit'
7
- require 'task_model'
8
+ require 'models/task_model'
8
9
 
9
10
  class DefaultModelSerializerTest < Test::Unit::TestCase
10
11
  include AbstractHPrevalenceTestHelper
@@ -13,15 +14,15 @@ class DefaultModelSerializerTest < Test::Unit::TestCase
13
14
  reset_dir 'store/default_model_serializer'
14
15
  ensure_dir
15
16
 
16
- @serializer = DefaultModelSerializer.new( FileIOManager.new( @target_dir ) )
17
+ @serializer = DefaultModelSerializer.new( FileIOManager.new( @target_dir ), DefaultMarshaller.new() )
17
18
  end
18
19
 
19
20
  def test_dump_and_load
20
21
 
21
22
  db = TaskDatabase.new()
22
- db.add_task( Task.new( 'one', 'yada yada yada' ) )
23
- db.add_task( Task.new( 'two', 'yada yada yada' ) )
24
- db.add_task( Task.new( 'three', 'yada yada yada' ) )
23
+ db.add_task( Task.new( 'one', 'yada yada yada' ), Time.now )
24
+ db.add_task( Task.new( 'two', 'yada yada yada' ), Time.now )
25
+ db.add_task( Task.new( 'three', 'yada yada yada' ), Time.now )
25
26
  db.priority_task = db.tasks[0]
26
27
 
27
28
  @serializer.dump( db )
@@ -43,15 +44,15 @@ class DefaultModelSerializerTest < Test::Unit::TestCase
43
44
  def test_multiple_snapshots
44
45
 
45
46
  db = TaskDatabase.new()
46
- db.add_task( Task.new( 'one', 'yada yada yada' ) )
47
+ db.add_task( Task.new( 'one', 'yada yada yada' ), Time.now )
47
48
 
48
49
  @serializer.dump( db )
49
50
 
50
- db.add_task( Task.new( 'two', 'yada yada yada' ) )
51
+ db.add_task( Task.new( 'two', 'yada yada yada' ), Time.now )
51
52
 
52
53
  @serializer.dump( db )
53
54
 
54
- db.add_task( Task.new( 'three', 'yada yada yada' ) )
55
+ db.add_task( Task.new( 'three', 'yada yada yada' ), Time.now )
55
56
 
56
57
  @serializer.dump( db )
57
58
 
@@ -0,0 +1,68 @@
1
+ $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
+
3
+ require 'internal/marshallers/default'
4
+ require 'internal/marshallers/soap_marshaller'
5
+ require 'internal/marshallers/yaml_marshaller'
6
+ require 'abstract_hprevalence_testcase'
7
+ require 'test/unit'
8
+ require 'models/task_model'
9
+
10
+ class MarshalersTest < Test::Unit::TestCase
11
+ include AbstractHPrevalenceTestHelper
12
+
13
+ def setup
14
+ reset_dir 'store/marshallers'
15
+ ensure_dir
16
+
17
+ @db = TaskDatabase.new()
18
+ @db.add_task( Task.new('first','contents'), Time.now )
19
+ @db.add_task( Task.new('second','contents'), Time.now )
20
+ end
21
+
22
+ def test_default
23
+ serialize_and_deserialize( DefaultMarshaller.new() )
24
+ end
25
+
26
+ def test_soap
27
+ serialize_and_deserialize( SoapMarshaller.new() )
28
+ end
29
+
30
+ def test_yaml
31
+ serialize_and_deserialize( YamlMarshaller.new() )
32
+ end
33
+
34
+ def serialize_and_deserialize( marshaller )
35
+ marshalled = marshaller.serialize( @db )
36
+ assert_not_nil marshalled
37
+ newdb = marshaller.restore( marshalled )
38
+ assert_not_nil newdb
39
+ assert_task newdb
40
+
41
+ file_name = File.join( @target_dir, 'temp' )
42
+ stream = File.new( file_name, 'w' )
43
+ marshaller.serialize_to_stream( '1', stream )
44
+ marshaller.serialize_to_stream( '2', stream )
45
+ marshaller.serialize_to_stream( '3', stream )
46
+ stream.close
47
+
48
+ File.open( file_name, 'r' ) { |readstream|
49
+ assert_equal '1', marshaller.restore( readstream )
50
+ assert_equal '2', marshaller.restore( readstream )
51
+ assert_equal '3', marshaller.restore( readstream )
52
+ }
53
+
54
+ end
55
+
56
+ def assert_task(newdb)
57
+ assert_equal @db.tasks.length, newdb.tasks.length
58
+ task1 = @db.tasks[0]
59
+ task2 = @db.tasks[1]
60
+
61
+ assert_equal 'first', task1.name
62
+ assert_equal 'contents', task1.contents
63
+ assert_equal 'second', task2.name
64
+ assert_equal 'contents', task2.contents
65
+ end
66
+
67
+ end
68
+
@@ -0,0 +1,91 @@
1
+ $:.unshift(File.dirname(__FILE__) + "/../lib/")
2
+
3
+ class Task
4
+
5
+ attr_accessor :name, :contents, :creation
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, time )
23
+ task.creation = time
24
+ @tasks << task
25
+ end
26
+
27
+ def remove_task_by_name( name )
28
+ @tasks.delete_if { |task|
29
+ task.name == name
30
+ }
31
+ end
32
+
33
+ def find_task_by_name( name )
34
+ @tasks.find { |task|
35
+ task.name == name
36
+ }
37
+ end
38
+
39
+ end
40
+
41
+ class AddTaskCommand
42
+
43
+ def initialize( task )
44
+ @task = task
45
+ end
46
+
47
+ def now=(value)
48
+ @now = value
49
+ end
50
+
51
+ def execute( system )
52
+ system.add_task( @task, @now )
53
+ end
54
+
55
+ end
56
+
57
+ class SetPriorityTaskCommand
58
+
59
+ def initialize( task_name )
60
+ @task_name = task_name
61
+ end
62
+
63
+ def execute( system )
64
+ system.priority_task = system.find_task_by_name( @task_name )
65
+ end
66
+
67
+ end
68
+
69
+ class UpdateTaskCommand
70
+
71
+ def initialize( name, new_content )
72
+ @name, @new_content = name, new_content
73
+ end
74
+
75
+ def execute( system )
76
+ system.find_task_by_name( @name ).contents = new_content
77
+ end
78
+
79
+ end
80
+
81
+ class RemoveTaskCommand
82
+
83
+ def initialize( name )
84
+ @name = name
85
+ end
86
+
87
+ def execute( system )
88
+ system.remove_task_by_name( @name )
89
+ end
90
+
91
+ end
@@ -3,7 +3,7 @@ $:.unshift(File.dirname(__FILE__) + "/../lib/")
3
3
  require 'hprevalence'
4
4
  require 'test/unit'
5
5
  require 'abstract_hprevalence_testcase'
6
- require 'task_model'
6
+ require 'models/task_model'
7
7
 
8
8
  class SimpleEngineTest < Test::Unit::TestCase
9
9
  include AbstractHPrevalenceTestHelper
@@ -35,24 +35,41 @@ class SimpleEngineTest < Test::Unit::TestCase
35
35
  @engine.execute_command( AddTaskCommand.new( task ) )
36
36
 
37
37
  assert_equal 1, @system.tasks.length
38
+ creation = task.creation
39
+ assert_not_nil creation
38
40
 
39
41
  load_engine
40
42
 
41
43
  assert_equal 1, @system.tasks.length
44
+ creation2 = @system.tasks[0].creation
45
+ assert_equal creation, creation2
46
+
42
47
  assert_equal 'put the cat out', @system.tasks[0].name
43
48
  assert_equal 'Before go sleep, put the cat out otherwise he will meow during the night', @system.tasks[0].contents
44
49
  end
45
50
 
51
+ def test_same_object
52
+ task = Task.new( 'first', 'content' )
53
+ @engine.execute_command( AddTaskCommand.new( task ) )
54
+ @engine.execute_command( SetPriorityTaskCommand.new('first') )
55
+
56
+ assert_equal 1, @system.tasks.length
57
+ assert_not_nil @system.priority_task
58
+
59
+ load_engine
60
+
61
+ assert_not_nil @system.priority_task
62
+ assert_equal 1, @system.tasks.length
63
+ assert_equal @system.priority_task, @system.tasks[0]
64
+ end
65
+
46
66
  def test_add_and_remove
47
67
  task = Task.new( 'one', 'Before go sleep, put the cat out otherwise he will meow during the night' )
48
68
  @engine.execute_command( AddTaskCommand.new( task ) )
49
69
  task = Task.new( 'two', 'Brush your teeth before go to bed' )
50
70
  @engine.execute_command( AddTaskCommand.new( task ) )
51
-
52
71
  assert_equal 2, @system.tasks.length
53
-
54
- @engine.execute_command( RemoveTaskCommand.new( 'two' ) )
55
-
72
+ @engine.execute_command( RemoveTaskCommand.new( 'two' ) )
56
73
  assert_equal 1, @system.tasks.length
57
74
 
58
75
  load_engine