cecelia 0.0.7 → 0.0.8

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.
data/cecelia.gemspec CHANGED
@@ -23,7 +23,6 @@ Gem::Specification.new do |s|
23
23
  # s.add_development_dependency "rspec"
24
24
  # s.add_runtime_dependency "rest-client"
25
25
  s.add_dependency('sqlite3')
26
- s.add_dependency('rspec')
27
26
  s.add_dependency('sequel')
28
27
  if defined? JRUBY_VERSION
29
28
  s.add_dependency('jdbc-sqlite3')
data/lib/cecelia/graph.rb CHANGED
@@ -7,12 +7,20 @@ class Graph
7
7
  db_name = "jdbc:" + db_name.sub(":/",":")
8
8
  end
9
9
  @db = Sequel.connect(db_name)
10
+ @beast = false
10
11
  require 'cecelia/graph_model.rb'
11
12
  end
13
+ attr_accessor :beast
12
14
 
13
15
  def add_vertex (label = "", attributes = {})
14
- if Vertices.find(:label => label) == nil
15
- Vertices.create(:label=> label, :attributes => YAML.dump(attributes))
16
+ unless @beast == true
17
+ if Vertices.find(:label => label) == nil
18
+ Vertices.create(:label=> label, :attributes => YAML.dump(attributes))
19
+ end
20
+ else
21
+ if Vertices.find(:label => label) == nil
22
+ @db[:vertices].insert(:label => label, :attributes => YAML.dump(attributes))
23
+ end
16
24
  end
17
25
  end
18
26
 
@@ -80,6 +88,18 @@ class Graph
80
88
  Edges.find(:id => id).delete
81
89
  end
82
90
 
91
+ def transaction
92
+ Vertices.use_transactions = false
93
+ @db.transaction do
94
+ yield(self)
95
+ end
96
+ end
97
+
98
+ def db
99
+ @db
100
+ end
101
+
102
+
83
103
  private
84
104
  def add_edge_id(source, target, attributes = {})
85
105
  unless Vertices.find(:id => source) == nil && Vertices.find(:id => target) == nil
@@ -6,7 +6,7 @@ class Vertices < Sequel::Model
6
6
  unless table_exists?
7
7
  set_schema do
8
8
  primary_key :id, :autoincrement => true
9
- string :label
9
+ string :label, :unique => true
10
10
  string :attributes
11
11
  end
12
12
  create_table
@@ -1,3 +1,3 @@
1
1
  module Cecelia
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
data/spec/graph_spec.rb CHANGED
@@ -5,21 +5,20 @@ require './lib/cecelia/graph.rb'
5
5
 
6
6
  describe Graph,"Iniaialize method" do
7
7
  it "Graph.new()に空引数" do
8
- Graph.new().should be_true
8
+ Graph.new.should be_true
9
9
  end
10
10
 
11
11
  it "Graph.new()にSQLiteを指定" do
12
12
  Graph.new("sqlite:hoge.db").should be_true
13
13
  end
14
14
 
15
- after(:all) do
16
- #File.delete("./hoge.db")
15
+ after(:each) do
16
+ Sequel::DATABASES.delete(Sequel::DATABASES.first)
17
17
  end
18
18
  end
19
19
 
20
20
  describe Graph, "ノード追加に関するテスト" do
21
21
  let(:g){Graph.new}
22
-
23
22
  it "空グラフのノード数" do
24
23
  g.vertices.size.should == 0
25
24
  end
@@ -49,11 +48,14 @@ describe Graph, "ノード追加に関するテスト" do
49
48
  it "同名ノードの禁止" do
50
49
  g.vertices.size.should == 10
51
50
  end
51
+
52
+ after(:each) do
53
+ Sequel::DATABASES.delete(Sequel::DATABASES.first)
54
+ end
52
55
  end
53
56
 
54
57
  describe Graph,"エッジの追加に関するテスト" do
55
58
  let(:g){Graph.new}
56
-
57
59
  #before(:all){10.times{|i| g.add_vertex(i.to_s)}}
58
60
 
59
61
  it "空グラフのエッジ数" do
@@ -88,12 +90,16 @@ describe Graph,"エッジの追加に関するテスト" do
88
90
 
89
91
  (g.edges.size - size).should == 4
90
92
  end
93
+
94
+ after(:each) do
95
+ Sequel::DATABASES.delete(Sequel::DATABASES.first)
96
+ end
91
97
  end
92
98
 
93
99
  describe Graph,"ノード削除に関するテスト" do
94
100
  let(:g){Graph.new}
95
101
 
96
- before(:all){
102
+ before(:each){
97
103
  10.times do |i|
98
104
  g.add_vertex(i.to_s)
99
105
  end
@@ -105,6 +111,10 @@ describe Graph,"ノード削除に関するテスト" do
105
111
  g.remove_vertex("1")
106
112
  (size - g.vertices.size).should == 1
107
113
  end
114
+
115
+ after(:all) do
116
+ Sequel::DATABASES.delete(Sequel::DATABASES.first)
117
+ end
108
118
  end
109
119
 
110
120
  describe Graph,"エッジ削除に関するテスト" do
@@ -126,4 +136,21 @@ describe Graph,"エッジ削除に関するテスト" do
126
136
  g.remove_edge("1")
127
137
  (size - g.edges.size).should == 1
128
138
  end
139
+
140
+ after(:all) do
141
+ Sequel::DATABASES.delete(Sequel::DATABASES.first)
142
+ end
143
+ end
144
+
145
+ describe Graph,"トランザクション関係" do
146
+ let(:g){Graph.new}
147
+
148
+ it "トランザクション開いて,ノードを一つ追加" do
149
+ size = g.vertices.size
150
+ g.transaction do |t|
151
+ t.add_vertex("10")
152
+ end
153
+ (g.vertices.size - size).should == 1
154
+ end
129
155
  end
156
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cecelia
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-26 00:00:00.000000000 Z
12
+ date: 2012-09-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: sqlite3
@@ -27,22 +27,6 @@ dependencies:
27
27
  - - ! '>='
28
28
  - !ruby/object:Gem::Version
29
29
  version: '0'
30
- - !ruby/object:Gem::Dependency
31
- name: rspec
32
- requirement: !ruby/object:Gem::Requirement
33
- none: false
34
- requirements:
35
- - - ! '>='
36
- - !ruby/object:Gem::Version
37
- version: '0'
38
- type: :runtime
39
- prerelease: false
40
- version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
46
30
  - !ruby/object:Gem::Dependency
47
31
  name: sequel
48
32
  requirement: !ruby/object:Gem::Requirement