Facebook
From Mammoth Pudu, 6 Years ago, written in Nimrod.
Embed
Download Paste or View Raw
Hits: 422
  1. type Mocked[T] = ref object
  2.     expectations* : int
  3.     calls*: seq[string]
  4.  
  5. method add_call(m : Mocked, param : string)  = # not generalized
  6.     add(m.calls, param)
  7.     m.expectations-=1
  8.  
  9. method expect(m : Mocked, num : int)  = # not generalized
  10.     m.expectations+=num
  11.  
  12. method verify(m : Mocked)  = # not generalized
  13.     if m.expectations > 0:
  14.         raise newException(Defect, "Not all expectations met!")
  15.  
  16. type RealExecute = ref object
  17.  
  18.  
  19. method execute(obj : RealExecute, process_name : string) =
  20.     echo "impl"
  21.  
  22.  
  23. method execute(obj : Mocked[RealExecute], process_name : string) =
  24.     echo "mocked"
  25.     obj.add_call(process_name)
  26.  
  27.  
  28. var object_used_in_code : RealExecute
  29. var object_used_in_ut : Mocked[RealExecute]
  30. new object_used_in_code
  31. new object_used_in_ut
  32.  
  33. proc exec[T](systemwrapper : T) =
  34.     systemwrapper.execute("test")
  35.  
  36.  
  37. object_used_in_ut.expect(3)
  38. exec(object_used_in_code)
  39. exec(object_used_in_ut)
  40. exec(object_used_in_ut)
  41. object_used_in_ut.verify()