stupidedi 1.3.21 → 1.3.22

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.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/lib/stupidedi/builder/builder_dsl.rb +5 -0
  3. data/lib/stupidedi/builder/constraint_table.rb +100 -74
  4. data/lib/stupidedi/builder/generation.rb +73 -70
  5. data/lib/stupidedi/builder/instruction.rb +10 -0
  6. data/lib/stupidedi/builder/instruction_table.rb +19 -7
  7. data/lib/stupidedi/builder/state_machine.rb +9 -3
  8. data/lib/stupidedi/builder/states/abstract_state.rb +1 -1
  9. data/lib/stupidedi/builder/states/failure_state.rb +1 -1
  10. data/lib/stupidedi/builder/states/initial_state.rb +4 -4
  11. data/lib/stupidedi/contrib/002001/guides/SH856.rb +4 -4
  12. data/lib/stupidedi/contrib/002001/transaction_set_defs/PO830.rb +2 -2
  13. data/lib/stupidedi/contrib/003010/guides/PS830.rb +4 -4
  14. data/lib/stupidedi/contrib/003010/guides/RA820.rb +22 -12
  15. data/lib/stupidedi/contrib/003010/transaction_set_defs/PC860.rb +2 -2
  16. data/lib/stupidedi/contrib/003010/transaction_set_defs/PS830.rb +1 -1
  17. data/lib/stupidedi/contrib/003050/guides/PO850.rb +2 -2
  18. data/lib/stupidedi/contrib/003050/transaction_set_defs/PO850.rb +2 -2
  19. data/lib/stupidedi/contrib/004010/guides.rb +0 -1
  20. data/lib/stupidedi/contrib/004010/transaction_set_defs/AR943.rb +1 -1
  21. data/lib/stupidedi/contrib/004010/transaction_set_defs/IM210.rb +2 -2
  22. data/lib/stupidedi/contrib/004010/transaction_set_defs/RE944.rb +1 -1
  23. data/lib/stupidedi/contrib/004010/transaction_set_defs/SH856.rb +1 -7
  24. data/lib/stupidedi/editor.rb +0 -1
  25. data/lib/stupidedi/guides/004010/guide_builder.rb +1 -1
  26. data/lib/stupidedi/guides/005010/X223-HC837I.rb +1192 -1195
  27. data/lib/stupidedi/guides/005010/guide_builder.rb +1 -1
  28. data/lib/stupidedi/schema.rb +1 -0
  29. data/lib/stupidedi/schema/auditor.rb +435 -0
  30. data/lib/stupidedi/schema/loop_def.rb +18 -1
  31. data/lib/stupidedi/schema/transaction_set_def.rb +12 -0
  32. data/lib/stupidedi/version.rb +1 -1
  33. data/lib/stupidedi/versions/functional_groups/004010/transaction_set_defs/HP835.rb +3 -17
  34. data/lib/stupidedi/versions/functional_groups/005010/element_types/time_val.rb +3 -2
  35. data/lib/stupidedi/versions/functional_groups/005010/segment_defs.rb +9 -6
  36. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HB271.rb +25 -9
  37. data/lib/stupidedi/versions/functional_groups/005010/transaction_set_defs/HP835.rb +2 -2
  38. data/lib/stupidedi/zipper.rb +20 -1
  39. data/lib/stupidedi/zipper/memoized_cursor.rb +2 -0
  40. data/lib/stupidedi/zipper/path.rb +10 -0
  41. data/lib/stupidedi/zipper/root_cursor.rb +1 -1
  42. data/lib/stupidedi/zipper/stack_cursor.rb +174 -0
  43. data/spec/examples/stupidedi/audit_spec.rb +58 -0
  44. data/spec/spec_helper.rb +21 -13
  45. data/spec/support/rcov.rb +9 -4
  46. metadata +4 -1
@@ -0,0 +1,58 @@
1
+ require "spec_helper"
2
+
3
+ describe Stupidedi::Schema::Auditor, :focus => true do
4
+
5
+ def self.definitions
6
+ ansi = Stupidedi::Color.ansi
7
+
8
+ @definitions ||= lambda do |root|
9
+ # Prevent walking in circles due to cycles in the graph
10
+ history = Hash.new
11
+ results = []
12
+
13
+ f = lambda do |namespace, recurse|
14
+ history[namespace] = true
15
+
16
+ for child in namespace.constants
17
+ begin
18
+ name = [namespace, child].join("::")
19
+ value = namespace.const_get(child)
20
+
21
+ if value.is_a?(Module)
22
+ if not history[value]
23
+ recurse.call(value, recurse)
24
+ end
25
+ elsif value.kind_of?(Stupidedi::Schema::TransactionSetDef)
26
+ results << [name, value]
27
+ end
28
+ rescue Stupidedi::Exceptions::InvalidSchemaError
29
+ $stderr.puts "warning: #{ansi.red("#{$!.class} #{$!.message}")}"
30
+ $stderr.puts " module: #{name}"
31
+ $stderr.puts " trace: #{$!.backtrace[0..-30].map{|x| " " + x}.join("\n")}"
32
+ $stderr.puts
33
+ rescue LoadError, NameError
34
+ $stderr.puts "warning: #{ansi.red("#{$!.class} #{$!.message}")}"
35
+ $stderr.puts " module: #{name}"
36
+ $stderr.puts
37
+ end
38
+ end
39
+ end
40
+
41
+ f.call(root, f)
42
+ results
43
+ end.call(Stupidedi)
44
+ end
45
+
46
+ definitions.each do |name, definition|
47
+ next if name =~ /FiftyTen::X223::HC837I/
48
+
49
+ it name do
50
+ Stupidedi::Schema::Auditor.build(definition).audit
51
+ end
52
+ end
53
+
54
+ pending "Stupidedi::Schema::Auditor Stupidedi::Guides::FiftyTen::X223::HC837I" do
55
+ Stupidedi::Schema::Auditor.build(Stupidedi::Guides::FiftyTen::X223::HC837I).audit
56
+ end
57
+
58
+ end
@@ -1,5 +1,6 @@
1
1
  require File.expand_path("../../lib/stupidedi", __FILE__)
2
- require 'pathname'
2
+ require "pathname"
3
+ require "pp"
3
4
 
4
5
  begin
5
6
  # RSpec-1: https://github.com/dchelimsky/rspec
@@ -17,9 +18,11 @@ rescue LoadError
17
18
  end if RUBY_VERSION >= "1.9"
18
19
 
19
20
  # Require supporting files with custom matchers and macros
20
- specdir = Pathname.new(File.dirname(__FILE__))
21
- Dir["#{specdir}/support/**/*.rb"].each do |file|
22
- require Pathname.new(file).relative_path_from(specdir)
21
+ begin
22
+ specdir = Pathname.new(File.dirname(__FILE__))
23
+ Dir["#{specdir}/support/**/*.rb"].each do |file|
24
+ require Pathname.new(file).relative_path_from(specdir)
25
+ end
23
26
  end
24
27
 
25
28
  RSpec::Expectations.configuration.warn_about_potential_false_positives = false
@@ -31,17 +34,22 @@ RSpec.configure do |config|
31
34
  c.syntax = [:should, :expect]
32
35
  end
33
36
 
34
- # rspec -I lib -t random spec
35
- # config.filter_run :random => true
37
+ # Use either of these to run only specs marked 'focus: true'
38
+ # config.filter_run(:focus => true)
39
+ # $ rspec -I lib -t focus spec
36
40
 
37
- # rspec -I lib -t ~random spec
38
- # config.filter_run_excluding :random => true
41
+ # Use either of these to run only randomized specs:
42
+ # config.filter_run(:random => true)
43
+ # $ rspec -I lib -t random spec
39
44
 
40
- # Skip platform-specific examples unless our platform matches
41
- config.filter_run_excluding(:ruby => lambda{|n| RUBY_VERSION !~ /^#{n}/ })
45
+ # When a randomized test fails, it will print a seed value you
46
+ # can use to repeat the test with the same generated inputs:
47
+ # srand 44182052595481443184625304627718313206
42
48
 
43
- # config.filter_run(:random => true)
44
- # config.filter_run(:focus => true)
49
+ # Use either of these to skip running randomized specs:
50
+ # config.filter_run_excluding(:random => true)
51
+ # $ rspec -I lib -t ~random spec
45
52
 
46
- # srand 44182052595481443184625304627718313206
53
+ # Skip platform-specific examples unless our platform matches
54
+ config.filter_run_excluding(:ruby => lambda{|n| RUBY_VERSION !~ /^#{n}/ })
47
55
  end
@@ -10,23 +10,28 @@
10
10
  if defined? Rcov or defined? SimpleCov
11
11
  lambda do |root|
12
12
  # Prevent walking in circles due to cycles in the graph
13
- # like Object.constants.include?("Object") #=> true
14
13
  history = Hash.new
14
+ ansi = Stupidedi::Color.ansi
15
15
 
16
16
  f = lambda do |namespace, recurse|
17
17
  history[namespace] = true
18
18
 
19
19
  for child in namespace.constants
20
20
  begin
21
- next if child.to_s == "Contrib"
21
+ name = [namespace, child].join("::")
22
22
  value = namespace.const_get(child)
23
23
 
24
24
  if value.is_a?(Module) and not history[value]
25
25
  recurse.call(value, recurse)
26
26
  end
27
+ rescue Stupidedi::Exceptions::InvalidSchemaError
28
+ $stderr.puts "warning: #{ansi.red("#{$!.class} #{$!.message}")}"
29
+ $stderr.puts " module: #{name}"
30
+ $stderr.puts
27
31
  rescue LoadError, NameError
28
- $stderr.puts "warning: #{$!.class} #{$!.message}"
29
- $stderr.puts " file: #{$!.backtrace.first}"
32
+ $stderr.puts "warning: #{ansi.red("#{$!.class} #{$!.message}")}"
33
+ $stderr.puts " module: #{name}"
34
+ $stderr.puts
30
35
  end
31
36
  end
32
37
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: stupidedi
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.21
4
+ version: 1.3.22
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kyle Putnam/Isi Robayna
@@ -244,6 +244,7 @@ files:
244
244
  - lib/stupidedi/schema.rb
245
245
  - lib/stupidedi/schema/abstract_def.rb
246
246
  - lib/stupidedi/schema/abstract_use.rb
247
+ - lib/stupidedi/schema/auditor.rb
247
248
  - lib/stupidedi/schema/code_list.rb
248
249
  - lib/stupidedi/schema/element_def.rb
249
250
  - lib/stupidedi/schema/element_req.rb
@@ -972,6 +973,7 @@ files:
972
973
  - lib/stupidedi/zipper/memoized_cursor.rb
973
974
  - lib/stupidedi/zipper/path.rb
974
975
  - lib/stupidedi/zipper/root_cursor.rb
976
+ - lib/stupidedi/zipper/stack_cursor.rb
975
977
  - spec/examples/integration/generating_spec.rb
976
978
  - spec/examples/integration/navigating_spec.rb
977
979
  - spec/examples/integration/nondeterminism_spec.rb
@@ -987,6 +989,7 @@ files:
987
989
  - spec/examples/ruby/symbol_spec.rb
988
990
  - spec/examples/ruby/to_d_spec.rb
989
991
  - spec/examples/ruby/try_spec.rb
992
+ - spec/examples/stupidedi/audit_spec.rb
990
993
  - spec/examples/stupidedi/either_spec.rb
991
994
  - spec/examples/stupidedi/reader/failure_spec.rb
992
995
  - spec/examples/stupidedi/reader/input/delegated_input_spec.rb