square_graph 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +18 -0
- data/Rakefile +6 -0
- data/lib/face.rb +8 -0
- data/lib/square_graph.rb +41 -0
- data/spec/face_spec.rb +14 -0
- data/spec/square_graph_spec.rb +65 -0
- metadata +52 -0
data/README.rdoc
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
= This is SquareGraph.
|
2
|
+
|
3
|
+
-n a graph is an abstract representation of a set of objects where some pairs of objects are connected by links. A square of these means that it's a graph where the maximum number of edges adjoining any object is 4.
|
4
|
+
|
5
|
+
This tool is an easier way of working with 2d arrays
|
6
|
+
|
7
|
+
== How to Install
|
8
|
+
|
9
|
+
gem install squareGraph
|
10
|
+
|
11
|
+
== Authors
|
12
|
+
|
13
|
+
Austin.L <b>~D4L</b>
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
---
|
18
|
+
noli umquam oblivisci: cogito ergo sum
|
data/Rakefile
ADDED
data/lib/face.rb
ADDED
data/lib/square_graph.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'face'
|
2
|
+
|
3
|
+
class SquareGraph
|
4
|
+
|
5
|
+
attr_reader :length, :width
|
6
|
+
|
7
|
+
def initialize(*dimen)
|
8
|
+
raise ArgumentError, "Only zero or two parameters" if ![0,2].include?(dimen.size)
|
9
|
+
if dimen.size == 2
|
10
|
+
raise ArgumentError if dimen[0].class != Fixnum or dimen[1].class != Fixnum
|
11
|
+
raise ArgumentError if dimen[0] < 1 or dimen[1] < 1
|
12
|
+
@length, @width = dimen[0], dimen[1]
|
13
|
+
@sized = true
|
14
|
+
else
|
15
|
+
@sized = false
|
16
|
+
end
|
17
|
+
@sg = Hash.new
|
18
|
+
end
|
19
|
+
|
20
|
+
def resize(length, width)
|
21
|
+
raise NoMethodError if @sized == false
|
22
|
+
raise ArgumentError if length.class != Fixnum or width.class != Fixnum
|
23
|
+
raise ArgumentError if length < 1 or width < 1
|
24
|
+
@length, @width = length, width
|
25
|
+
end
|
26
|
+
|
27
|
+
def fill(*args)
|
28
|
+
x, y = args[0], args[1]
|
29
|
+
@sg[[x,y]] = Face.new(x, y, true)
|
30
|
+
end
|
31
|
+
|
32
|
+
def get(x, y)
|
33
|
+
@sg[[x,y]].object
|
34
|
+
end
|
35
|
+
|
36
|
+
def insert
|
37
|
+
end
|
38
|
+
|
39
|
+
def get_truthy(x, y)
|
40
|
+
end
|
41
|
+
end
|
data/spec/face_spec.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'face'
|
2
|
+
|
3
|
+
describe Face, '#new' do
|
4
|
+
it "accepts an x, y, object and can display them easily" do
|
5
|
+
a = Face.new(5, 5, true)
|
6
|
+
a.x.should eql(5)
|
7
|
+
a.y.should eql(5)
|
8
|
+
a.object.should eql(true)
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
describe Face, '#get_truthy' do
|
13
|
+
#TODO this will be fun, basically, it will get the truth value of the object
|
14
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'square_graph'
|
2
|
+
|
3
|
+
describe SquareGraph, '#new' do
|
4
|
+
it "should accept two parameters" do
|
5
|
+
SquareGraph.new(5,5).should_not be_nil
|
6
|
+
end
|
7
|
+
it "should error when given one parameter" do
|
8
|
+
expect {SquareGraph.new(0)}.to raise_error(ArgumentError, "Only zero or two parameters")
|
9
|
+
end
|
10
|
+
it "should accept no parameters" do
|
11
|
+
SquareGraph.new.should_not be_nil
|
12
|
+
end
|
13
|
+
it "should save if two parameters given as length, width" do
|
14
|
+
sg = SquareGraph.new(5,10)
|
15
|
+
sg.length.should eq(5)
|
16
|
+
sg.width.should eq(10)
|
17
|
+
end
|
18
|
+
it "should only save integers into the parameters" do
|
19
|
+
expect {SquareGraph.new("lalaland", "luftland")}.to raise_error(ArgumentError)
|
20
|
+
end
|
21
|
+
it "should only save positive integers into the parameters" do
|
22
|
+
expect {SquareGraph.new(0,5)}.to raise_error(ArgumentError)
|
23
|
+
expect {SquareGraph.new(5,-1)}.to raise_error(ArgumentError)
|
24
|
+
end
|
25
|
+
it "should not save len/wid if no parameters are given" do
|
26
|
+
sg = SquareGraph.new
|
27
|
+
expect {sq.length}.to raise_error
|
28
|
+
expect {sq.width}.to raise_error
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
describe SquareGraph, "#resize" do
|
33
|
+
it "resizes dimentioned graphs given two parameters" do
|
34
|
+
sg = SquareGraph.new(5,5)
|
35
|
+
sg.resize(10,10)
|
36
|
+
sg.length.should eq(10)
|
37
|
+
sg.width.should eq(10)
|
38
|
+
end
|
39
|
+
it "should not resize dimentionless graphs" do
|
40
|
+
sg = SquareGraph.new
|
41
|
+
expect {sg.resize(1,1)}.to raise_error(NoMethodError)
|
42
|
+
end
|
43
|
+
it "should only resize to valid sizes" do
|
44
|
+
sg = SquareGraph.new(5,5)
|
45
|
+
expect {sg.resize(0, -1)}.to raise_error(ArgumentError)
|
46
|
+
end
|
47
|
+
it "should not be able to resize if conflicts" do
|
48
|
+
#TODO yeah, let's implement this later
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
describe SquareGraph, "#fill" do
|
53
|
+
it "simply fills in a location with a simple TrueClass" do
|
54
|
+
sg = SquareGraph.new(5,5)
|
55
|
+
sg.fill(2,2)
|
56
|
+
sg.get(2,2).should eql(true)
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
describe SquareGraph, "#insert" do
|
61
|
+
it "fills a location with an object" do
|
62
|
+
#TODO this one gets rly hard.
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
metadata
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: square_graph
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Austin Lee ~D4L
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2012-02-23 00:00:00.000000000 Z
|
13
|
+
dependencies: []
|
14
|
+
description: No description for now.
|
15
|
+
email: Austin.L.D4L@gmail.com
|
16
|
+
executables: []
|
17
|
+
extensions: []
|
18
|
+
extra_rdoc_files: []
|
19
|
+
files:
|
20
|
+
- lib/square_graph.rb
|
21
|
+
- lib/face.rb
|
22
|
+
- Rakefile
|
23
|
+
- README.rdoc
|
24
|
+
- spec/square_graph_spec.rb
|
25
|
+
- spec/face_spec.rb
|
26
|
+
homepage: https://github.com/D4L/squareGraph
|
27
|
+
licenses: []
|
28
|
+
post_install_message:
|
29
|
+
rdoc_options: []
|
30
|
+
require_paths:
|
31
|
+
- lib
|
32
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
39
|
+
none: false
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
44
|
+
requirements: []
|
45
|
+
rubyforge_project:
|
46
|
+
rubygems_version: 1.8.15
|
47
|
+
signing_key:
|
48
|
+
specification_version: 3
|
49
|
+
summary: a better 2d array
|
50
|
+
test_files:
|
51
|
+
- spec/square_graph_spec.rb
|
52
|
+
- spec/face_spec.rb
|