mbt-gen 0.0.12 → 0.0.13.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 20bf8b787d83e3b2b6944c56c94054da7f42bd5c587bd4dd78486a2aec1acf12
4
- data.tar.gz: 055a0a05ac4556b952c6746f2bf987b440b80f111f0714883958193be4254966
3
+ metadata.gz: a735505ef6ca3f6784860c7a01aa8abafdcfed996095718d94ed2caeee517c6a
4
+ data.tar.gz: 1822f83dfae7c22337e3754fe204955b02861a33f13558034a331092235d2c06
5
5
  SHA512:
6
- metadata.gz: c58c06320fda5aa5944b17ac9e1507f1d65ffe93810bb7c0fcb158e6e1ddb273b98ab3a47afbdbf41b9230fdf0bc2deb8a2b6b04e78bdd413e9a9876e82b40fc
7
- data.tar.gz: 884f6ef5c8f134cfe401a5a46e28b92599ee86ae46adfc7ad8d30bdc1c5e1d47299ffc177774b03b230c29a63ae605196a0e551c0ad4bcebc9aae4ecee5990dd
6
+ metadata.gz: 36a74c094e81a175ecc802dcd93f5da64660ff84712672752b95d139f17985945814b6ce84e7910f286c1b2f229cdb8a026b8c42049ef4779f5b36af9c47d465
7
+ data.tar.gz: 98307fab8e79ca0df312ff6a6375cc02c103c025e0bde84cc3fbf350e88b1062ffe93603bba0212344d51025ef839602d12e4389ea4f94f31a3c29208cc5f63b
data/lib/mbt-gen.rb CHANGED
@@ -596,6 +596,19 @@ def translate_validation_rules_to_SMTLIB(progress, solver, struct, prefix, confi
596
596
  new_prefix = key.to_s
597
597
  end
598
598
  translate_validation_rules_to_SMTLIB(progress, solver, value[:ref], new_prefix, config, options)
599
+ elsif value[:type] == :objlist then
600
+ maxLength = value[:model_maxLength]
601
+ unless maxLength then
602
+ raise RuntimeError.new("encountered objList without :model_maxLength property!")
603
+ end
604
+ maxLength.times do |i|
605
+ if prefix then
606
+ new_prefix = "#{prefix.to_s}/#{key}/#{i}"
607
+ else
608
+ new_prefix = "#{key.to_s}/#{i}"
609
+ end
610
+ translate_validation_rules_to_SMTLIB(progress, solver, value[:ref], new_prefix, config, options)
611
+ end
599
612
  end
600
613
  end
601
614
  end
@@ -615,7 +628,7 @@ def translate_validation_rule_to_SMTLIB(rule, context_struct, prefix, config, op
615
628
  raise RuntimeError.new("could not parse LIST_VALUE_FIRST_ELEMENT[...]: #{m.inspect} in validation rule #{rule_name}")
616
629
  end
617
630
  xpath = $1
618
- index = Integer($2)
631
+ index = Integer($2, 10)
619
632
  l = resolve_field_path(xpath, context_struct, prefix)
620
633
  value_var_for_list(l, index)
621
634
  end
@@ -711,7 +724,7 @@ def translate_validation_rule_to_SMTLIB(rule, context_struct, prefix, config, op
711
724
  end
712
725
  elsif fdef[:datatype] == :int then
713
726
  terms = values.filter{|l| !l.start_with?("#")}.map do |val|
714
- "(= #{value_var_for_field(fpath)} #{Integer(val)})"
727
+ "(= #{value_var_for_field(fpath)} #{Integer(val, 10)})"
715
728
  end
716
729
  else
717
730
  raise RuntimeError.new("FIELD_IN_QUERY[] was applied to a field of datatype #{fdef[:datatype].inspect}. However, it can only be applied to fields of datatype string or int.")
@@ -780,7 +793,7 @@ def parse_field_value(fielddef, value)
780
793
  datatype = fielddef[:datatype]
781
794
  case datatype
782
795
  when :int
783
- return Integer(value)
796
+ return Integer(value, 10)
784
797
  when :string
785
798
  return solver_value_to_string(value)
786
799
  when :enum
@@ -865,8 +878,8 @@ def add_max_struct_to_doc(progress, struct, doc, prefix = nil)
865
878
  node = node.first
866
879
  end
867
880
  xpath_element = value[:xpath_element]
868
- if Integer(value[:model_maxLength]) > 0 then
869
- Integer(value[:model_maxLength]).times do |i|
881
+ if Integer(value[:model_maxLength], 10) > 0 then
882
+ Integer(value[:model_maxLength], 10).times do |i|
870
883
  node.add_child("<#{xpath_element}>#{format_solver_value(value, pick_solver_value_for_field(value))}</#{xpath_element}>")
871
884
  end
872
885
  end
@@ -928,8 +941,8 @@ def add_model_struct_to_doc(progress, struct, doc, model, prefix = nil)
928
941
  node = node.first
929
942
  end
930
943
  xpath_element = value[:xpath_element]
931
- if Integer(model_value[:size]) > 0 then
932
- model_value[:value].slice(0, Integer(model_value[:size])).each do |mvalue|
944
+ if Integer(model_value[:size], 10) > 0 then
945
+ model_value[:value].slice(0, Integer(model_value[:size], 10)).each do |mvalue|
933
946
  node.add_child("<#{xpath_element}>#{solver_value_to_string(mvalue)}</#{xpath_element}>")
934
947
  end
935
948
  end
@@ -939,7 +952,7 @@ def add_model_struct_to_doc(progress, struct, doc, model, prefix = nil)
939
952
  node = node.first
940
953
  end
941
954
  xpath_element = value[:xpath_element]
942
- if Integer(model_value[:size]) > 0 then
955
+ if Integer(model_value[:size], 10) > 0 then
943
956
  model_value[:size].times do |index|
944
957
  cnode = node.add_child("<#{xpath_element}></#{xpath_element}>")
945
958
  if cnode.is_a?(Nokogiri::XML::NodeSet) then
@@ -1315,7 +1328,7 @@ def z3ValueToRubyValue(value)
1315
1328
  if value =~ /\"(.*)\"/ then # string
1316
1329
  return $1
1317
1330
  elsif value =~ /\d+/ then # int
1318
- return Integer(value)
1331
+ return Integer(value, 10)
1319
1332
  elsif value == "true"
1320
1333
  return true
1321
1334
  elsif value == "false" then
@@ -1583,7 +1596,7 @@ def default_parser_for_type(value_str, datatype)
1583
1596
  if datatype == :string or datatype == :enum then
1584
1597
  value_str
1585
1598
  elsif datatype == :int then
1586
- Integer(value_str)
1599
+ Integer(value_str, 10)
1587
1600
  elsif datatype == :date then
1588
1601
  Date.parse(value_str)
1589
1602
  elsif datatype == :timestamp then
@@ -1806,12 +1819,12 @@ class CoreEnumerationAlgo
1806
1819
 
1807
1820
  def self.parse_continuation_point(line)
1808
1821
  split = line.split(";")
1809
- doc_number = Integer(split[0])
1810
- num_docs = Integer(split[1])
1822
+ doc_number = Integer(split[0], 10)
1823
+ num_docs = Integer(split[1], 10)
1811
1824
  state = CoreEnumerationAlgo.parse_state(split[2])
1812
1825
  assignment = CoreEnumerationAlgo.parse_assignment(split[3])
1813
1826
  new_assignment = CoreEnumerationAlgo.parse_assignment(split[4])
1814
- processessing_time = Integer(split[5])
1827
+ processessing_time = Integer(split[5], 10)
1815
1828
  return [doc_number, num_docs, state, assignment, new_assignment, processessing_time]
1816
1829
  end
1817
1830
 
@@ -2510,7 +2523,7 @@ def generate(message, argv, message_config_filename = nil)
2510
2523
  elsif opt == "-generate-docs-from" then
2511
2524
  options[:combination_source] = argv.shift
2512
2525
  elsif opt == "-skip" then
2513
- options[:skip] = Integer(argv.shift)
2526
+ options[:skip] = Integer(argv.shift, 10)
2514
2527
  elsif opt == "-generate-docs-for-key" then
2515
2528
  options[:docs_for_key] = argv.shift
2516
2529
  elsif opt == "-count-docs-for-key" then
@@ -2518,7 +2531,7 @@ def generate(message, argv, message_config_filename = nil)
2518
2531
  elsif opt == "-continue" then
2519
2532
  options[:continue] = true
2520
2533
  elsif opt == "-max-num-docs" then
2521
- options[:max_num_docs] = Integer(argv.shift)
2534
+ options[:max_num_docs] = Integer(argv.shift, 10)
2522
2535
  puts "flag -max-num-docs used. Will stop after generating #{options[:max_num_docs]} documents."
2523
2536
  elsif opt == "-validate" then
2524
2537
  if options.has_key?(:validate_files) then
@@ -84,8 +84,8 @@ class Regexp_to_SMTLIB
84
84
  return "(re.opt #{expr})"
85
85
  elsif multiplicator =~ /\{(\d+),(\d+)\}/ then
86
86
  begin
87
- lower = Integer($1)
88
- upper = Integer($2)
87
+ lower = Integer($1, 10)
88
+ upper = Integer($2, 10)
89
89
  rescue TypeError => e
90
90
  raise RuntimeError.new("cannot parse regexp (#{$1} or #{$2} is no Integer)")
91
91
  end
@@ -117,4 +117,4 @@ class Regexp_to_SMTLIB
117
117
  end
118
118
 
119
119
 
120
- end
120
+ end
data/lib/solver-lib.rb CHANGED
@@ -337,7 +337,7 @@ class SolverFactory
337
337
  unless varname =~ /-index-(\d+)-value$/
338
338
  raise RuntimeError.new("inconsistent model: xpath #{xpath} is a list value and hence its varname should end like -index-X-value, not #{varname.inspect}.")
339
339
  end
340
- index = Integer($1)
340
+ index = Integer($1, 10)
341
341
  model[xpath][:xpath_element] = info[:xpath_element]
342
342
  if model[xpath].has_key?(:value) then
343
343
  val = convert_solver_value(info[:type], info[:datatype], value, xpath)
@@ -354,7 +354,7 @@ class SolverFactory
354
354
  if model[xpath][:type] == :field then
355
355
  model[xpath][:type] = :list
356
356
  end
357
- model[xpath][:size] = Integer(value)
357
+ model[xpath][:size] = Integer(value, 10)
358
358
  elsif varname.start_with?("struct-") && varname.end_with?("-exists") then
359
359
  unless model[xpath][:type] == :struct then
360
360
  raise RuntimeError.new("inconsistent model: xpath #{xpath} should be a struct, not a #{model[xpath][:type]}.")
@@ -403,9 +403,9 @@ class SolverFactory
403
403
  def convert_solver_value(type, datatype, value, xpath)
404
404
  check_type(type, value, xpath)
405
405
  if datatype == :date then
406
- return (Time.at(0).to_date + Integer(value)).to_s
406
+ return (Time.at(0).to_date + Integer(value, 10)).to_s
407
407
  elsif datatype == :timestamp then
408
- return Time.at(Integer(value)).to_s
408
+ return Time.at(Integer(value, 10)).to_s
409
409
  else
410
410
  return value
411
411
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mbt-gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.12
4
+ version: 0.0.13.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - FM-enthusiast
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2026-09-05 00:00:00.000000000 Z
11
+ date: 2026-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri