module BinData::BasePrimitive::AssertPlugin

def assert!

def assert!
  current_value = snapshot
  expected = eval_parameter(:assert, value: current_value)
  msg =
    if !expected
      "value '#{current_value}' not as expected"
    elsif expected != true && current_value != expected
      "value is '#{current_value}' but expected '#{expected}'"
    else
      nil
    end
  raise ValidityError, "#{msg} for #{debug_name}" if msg
end

def assign(val)

def assign(val)
  super(val)
  assert!
end

def do_read(io) # :nodoc:

:nodoc:
def do_read(io) # :nodoc:
  super(io)
  assert!
end