structured-acceptance-test 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: db1011b13e229f0bcc5b3aad85cf5b8a0ba76b88
4
+ data.tar.gz: 3b70de0a60d7e732f202750c2621caa9e12101dd
5
+ SHA512:
6
+ metadata.gz: d664c6933b6020e761babc9a150c6f54ed11530773376b8bec829ea1b1d95240fe66b85dfbd13389393484b4fcc7467cf5c3c8bc1995d320b8c75c53cacc16fe
7
+ data.tar.gz: b8efc5f4ed1f9319772807479e10a3b47e7125b919983fd6646fc4dbe955d8e61ea0d7195aae1a9cae45772ce61a44685f4bdfa56d991d1f5b9ff9db49f91321
data/lib/JSONable.rb ADDED
@@ -0,0 +1,13 @@
1
+ module StatModule
2
+ require 'json'
3
+
4
+ class JSONable
5
+ def to_json(options = {})
6
+ hash = {}
7
+ self.instance_variables.each do |var|
8
+ hash[var.to_s.delete "@"] = self.instance_variable_get var
9
+ end
10
+ hash.to_json
11
+ end
12
+ end
13
+ end
data/lib/category.rb ADDED
@@ -0,0 +1,7 @@
1
+ module StatModule
2
+ require 'enum'
3
+
4
+ class Category < Enum::Base
5
+ values 'Bug Risk', 'Clarity', 'Associative', 'Compatibility', 'Complexity', 'Duplication', 'Performance', 'Security', 'Style'
6
+ end
7
+ end
data/lib/detail.rb ADDED
@@ -0,0 +1,33 @@
1
+ module StatModule
2
+ require_relative 'JSONable'
3
+
4
+ class Detail < JSONable
5
+
6
+ def initialize(body)
7
+ @body = body
8
+ @trace = []
9
+ end
10
+
11
+ def body=(body)
12
+ raise TypeException unless body.is_a?(String)
13
+ @body = body
14
+ end
15
+
16
+ def body
17
+ @body
18
+ end
19
+
20
+ def trace=(trace)
21
+ raise TypeException unless trace.is_a?(Array)
22
+ trace.each { |item|
23
+ raise TypeException unless item.is_a?(StatModule::Location)
24
+ raise DuplicateElementException if @trace.include?(item)
25
+ @trace.push(item)
26
+ }
27
+ end
28
+
29
+ def trace
30
+ @trace
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,4 @@
1
+ module StatModule
2
+ class DuplicateElementException < Exception
3
+ end
4
+ end
data/lib/finding.rb ADDED
@@ -0,0 +1,103 @@
1
+ module StatModule
2
+ require_relative 'JSONable'
3
+
4
+ class Finding < JSONable
5
+
6
+ def initialize(failure, rule, description)
7
+ raise TypeException unless rule.is_a?(String) && description.is_a?(String)
8
+ @failure = failure
9
+ @rule = rule
10
+ @description = description
11
+ @categories = []
12
+ @fixes = []
13
+ end
14
+
15
+ def failure=(failure)
16
+ @failure = failure
17
+ end
18
+
19
+ def failure
20
+ @failure
21
+ end
22
+
23
+ def rule=(rule)
24
+ raise TypeException unless rule.is_a?(String)
25
+ @rule = rule
26
+ end
27
+
28
+ def rule
29
+ @rule
30
+ end
31
+
32
+ def description=(description)
33
+ raise TypeException unless description.is_a?(String)
34
+ @description = description
35
+ end
36
+
37
+ def description
38
+ @description
39
+ end
40
+
41
+ def detail=(detail)
42
+ raise TypeException unless detail.is_a?(StatModule::Detail)
43
+ @detail = detail
44
+ end
45
+
46
+ def detail
47
+ @detail
48
+ end
49
+
50
+ def categories=(categories)
51
+ raise TypeException unless categories.is_a?(Array)
52
+ categories.each { |item|
53
+ raise TypeException unless Category.all.include?(item)
54
+ raise DuplicateElementException if @categories.include?(item)
55
+ @categories.push(item)
56
+ }
57
+ end
58
+
59
+ def categories
60
+ @categories
61
+ end
62
+
63
+ def location=(location)
64
+ raise TypeException unless location.is_a?(Location)
65
+ @location = location
66
+ end
67
+
68
+ def location
69
+ @location
70
+ end
71
+
72
+ def time_to_fix=(time_to_fix)
73
+ raise TypeException unless time_to_fix.is_a?(Integer)
74
+ @timeToFix = time_to_fix
75
+ end
76
+
77
+ def time_to_fix
78
+ @timeToFix
79
+ end
80
+
81
+ def recommendation=(recommendation)
82
+ raise TypeException unless recommendation.is_a?(String)
83
+ @recommendation = recommendation
84
+ end
85
+
86
+ def recommendation
87
+ @recommendation
88
+ end
89
+
90
+ def fixes=(fixes)
91
+ raise TypeException unless fixes.is_a?(Array)
92
+ @fixes.each { |item|
93
+ raise TypeException unless item.is_a?(StatModule::Fix)
94
+ raise DuplicateElementException if @fixes.include?(item)
95
+ @fixes.push(item)
96
+ }
97
+ end
98
+
99
+ def fixes
100
+ @fixes
101
+ end
102
+ end
103
+ end
data/lib/fix.rb ADDED
@@ -0,0 +1,28 @@
1
+ module StatModule
2
+ require_relative 'JSONable'
3
+
4
+ class Fix < JSONable
5
+
6
+ def initialize(location)
7
+ @location = location
8
+ end
9
+
10
+ def location=(location)
11
+ raise TypeException unless location.is_a?(StatModule::Location)
12
+ @location = location
13
+ end
14
+
15
+ def location
16
+ @location
17
+ end
18
+
19
+ def new_text=(new_text)
20
+ raise TypeException unless new_text.is_a?(String)
21
+ @newText = new_text
22
+ end
23
+
24
+ def new_text
25
+ @newText
26
+ end
27
+ end
28
+ end
data/lib/location.rb ADDED
@@ -0,0 +1,55 @@
1
+ module StatModule
2
+ require_relative 'JSONable'
3
+
4
+ class Location < JSONable
5
+
6
+ def initialize(path)
7
+ @path = path
8
+ end
9
+
10
+ def path=(path)
11
+ raise TypeException unless path.is_a?(String)
12
+ @path = path
13
+ end
14
+
15
+ def path
16
+ @path
17
+ end
18
+
19
+ def begin_line=(begin_line)
20
+ raise TypeException unless begin_line.is_a?(Integer)
21
+ @beginLine = begin_line
22
+ end
23
+
24
+ def begin_line
25
+ @beginLine
26
+ end
27
+
28
+ def begin_column=(begin_column)
29
+ raise TypeException unless begin_column.is_a?(Integer)
30
+ @beginColumn = begin_column
31
+ end
32
+
33
+ def begin_column
34
+ @beginColumn
35
+ end
36
+
37
+ def end_line=(end_line)
38
+ raise TypeException unless end_line.is_a?(Integer)
39
+ @endLine = end_line
40
+ end
41
+
42
+ def end_line
43
+ @endLine
44
+ end
45
+
46
+ def end_column=(end_column)
47
+ raise TypeException unless end_column.is_a?(Integer)
48
+ @endColumn = end_column
49
+ end
50
+
51
+ def end_column
52
+ @endColumn
53
+ end
54
+ end
55
+ end
data/lib/process.rb ADDED
@@ -0,0 +1,76 @@
1
+ module StatModule
2
+
3
+ require_relative 'JSONable'
4
+
5
+ class Process < JSONable
6
+
7
+ def initialize(name)
8
+ raise TypeException unless name.is_a?(String)
9
+ @name = name
10
+ end
11
+
12
+ def name=(name)
13
+ raise TypeException unless name.is_a?(String)
14
+ @name = name
15
+ end
16
+
17
+ def name
18
+ @name
19
+ end
20
+
21
+ def version=(version)
22
+ raise TypeException unless version.is_a?(String)
23
+ @version = version
24
+ end
25
+
26
+ def version
27
+ @version
28
+ end
29
+
30
+ def description=(description)
31
+ raise TypeException unless description.is_a?(String)
32
+ @description = description
33
+ end
34
+
35
+ def description
36
+ @description
37
+ end
38
+
39
+ def maintainer=(maintainer)
40
+ raise TypeException unless maintainer.is_a?(String)
41
+ @maintainer = maintainer
42
+ end
43
+
44
+ def maintainer
45
+ @maintainer
46
+ end
47
+
48
+ def email=(email)
49
+ raise TypeException unless email.is_a?(String)
50
+ @email = email
51
+ end
52
+
53
+ def email
54
+ @email
55
+ end
56
+
57
+ def website=(website)
58
+ raise TypeException unless website.is_a?(String)
59
+ @website = website
60
+ end
61
+
62
+ def website
63
+ @website
64
+ end
65
+
66
+ def repeatability=(repeatability)
67
+ raise TypeException unless Repeatability.all.include?(repeatability)
68
+ @repeatability = repeatability
69
+ end
70
+
71
+ def repeatability
72
+ @repeatability
73
+ end
74
+ end
75
+
76
+ end
@@ -0,0 +1,7 @@
1
+ module StatModule
2
+ require 'enum'
3
+
4
+ class Repeatability < Enum::Base
5
+ values 'Volatile', 'Repeatable', 'Associative'
6
+ end
7
+ end
data/lib/stat.rb ADDED
@@ -0,0 +1,45 @@
1
+ module StatModule
2
+
3
+ require_relative 'detail'
4
+ require_relative 'finding'
5
+ require_relative 'fix'
6
+ require_relative 'location'
7
+ require_relative 'process'
8
+ require_relative 'repeatability'
9
+ require_relative 'category'
10
+ require_relative 'JSONable'
11
+ require_relative 'type_exception'
12
+
13
+ class Stat < JSONable
14
+ attr_reader :statVersion
15
+
16
+ def initialize(process)
17
+ raise TypeException unless process.is_a?(StatModule::Process)
18
+ @statVersion = '1.0.0'
19
+ @process = process
20
+ @findings = []
21
+ end
22
+
23
+ def findings=(findings)
24
+ raise TypeException unless findings.is_a?(Array)
25
+ findings.each { |item|
26
+ raise TypeException unless item.is_a?(StatModule::Finding)
27
+ raise DuplicateElementException if @findings.include?(item)
28
+ @findings.push(item)
29
+ }
30
+ end
31
+
32
+ def findings
33
+ @findings
34
+ end
35
+
36
+ def process=(process)
37
+ raise TypeException unless process.is_a?(StatModule::Process)
38
+ @process = process
39
+ end
40
+
41
+ def process
42
+ @process
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,4 @@
1
+ module StatModule
2
+ class TypeException < Exception
3
+ end
4
+ end
metadata ADDED
@@ -0,0 +1,56 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: structured-acceptance-test
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - William Entriken
8
+ - Ilia Grabko
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2017-01-11 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Structured acceptance test data structure gem
15
+ email: github.com@phor.net
16
+ executables: []
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - lib/JSONable.rb
21
+ - lib/category.rb
22
+ - lib/detail.rb
23
+ - lib/duplicate_element_exception.rb
24
+ - lib/finding.rb
25
+ - lib/fix.rb
26
+ - lib/location.rb
27
+ - lib/process.rb
28
+ - lib/repeatability.rb
29
+ - lib/stat.rb
30
+ - lib/type_exception.rb
31
+ homepage: https://github.com/fulldecent/structured-acceptance-test
32
+ licenses:
33
+ - MIT
34
+ metadata: {}
35
+ post_install_message:
36
+ rdoc_options: []
37
+ require_paths:
38
+ - lib
39
+ required_ruby_version: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ requirements: []
50
+ rubyforge_project:
51
+ rubygems_version: 2.5.1
52
+ signing_key:
53
+ specification_version: 4
54
+ summary: Structured acceptance test
55
+ test_files: []
56
+ has_rdoc: