require 'virtual_poly' d = Virtual_poly::NDouble.new(3.5) i = Virtual_poly::NInt.new(2) # # polymorphic return type working # dc = d.copy ic = i.copy raise RuntimeError if d.get != dc.get raise RuntimeError if i.get != ic.get # # 'narrowing' working ('nnumber' returns a NNumber) # ddc = Virtual_poly::NDouble.narrow(dc.nnumber) raise RuntimeError if d.get != ddc.get dic = Virtual_poly::NInt.narrow(ic.nnumber) raise RuntimeError if i.get != dic.get