virtualbox 0.6.1 → 0.7.0

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 (268) hide show
  1. data/.yardopts +0 -1
  2. data/Rakefile +1 -1
  3. data/VERSION +1 -1
  4. data/lib/virtualbox/abstract_model/attributable.rb +1 -0
  5. data/lib/virtualbox/abstract_model/validatable.rb +133 -10
  6. data/lib/virtualbox/abstract_model.rb +3 -3
  7. data/lib/virtualbox/appliance.rb +5 -2
  8. data/lib/virtualbox/audio_adapter.rb +11 -3
  9. data/lib/virtualbox/bios.rb +10 -4
  10. data/lib/virtualbox/com/abstract_enum.rb +6 -5
  11. data/lib/virtualbox/com/abstract_implementer.rb +4 -2
  12. data/lib/virtualbox/com/abstract_interface.rb +6 -4
  13. data/lib/virtualbox/com/base_interface.rb +38 -0
  14. data/lib/virtualbox/com/ffi/interface.rb +14 -5
  15. data/lib/virtualbox/com/ffi/interfaces.rb +36 -32
  16. data/lib/virtualbox/com/ffi/util.rb +22 -4
  17. data/lib/virtualbox/com/ffi_interface.rb +39 -8
  18. data/lib/virtualbox/com/implementer/base.rb +2 -2
  19. data/lib/virtualbox/com/implementer/ffi.rb +55 -44
  20. data/lib/virtualbox/com/implementer/mscom.rb +2 -4
  21. data/lib/virtualbox/com/interface/3.1.x/appliance.rb +22 -0
  22. data/lib/virtualbox/com/interface/3.1.x/audio_adapter.rb +15 -0
  23. data/lib/virtualbox/com/interface/3.1.x/audio_controller_type.rb +11 -0
  24. data/lib/virtualbox/com/interface/3.1.x/audio_driver_type.rb +11 -0
  25. data/lib/virtualbox/com/interface/3.1.x/bios_boot_menu_mode.rb +11 -0
  26. data/lib/virtualbox/com/interface/3.1.x/bios_settings.rb +21 -0
  27. data/lib/virtualbox/com/interface/3.1.x/clipboard_mode.rb +11 -0
  28. data/lib/virtualbox/com/interface/3.1.x/console.rb +50 -0
  29. data/lib/virtualbox/com/interface/3.1.x/cpu_property_type.rb +11 -0
  30. data/lib/virtualbox/com/interface/3.1.x/device_type.rb +11 -0
  31. data/lib/virtualbox/com/interface/3.1.x/dhcp_server.rb +22 -0
  32. data/lib/virtualbox/com/interface/3.1.x/firmware_type.rb +11 -0
  33. data/lib/virtualbox/com/interface/3.1.x/guest_os_type.rb +23 -0
  34. data/lib/virtualbox/com/interface/3.1.x/host.rb +42 -0
  35. data/lib/virtualbox/com/interface/3.1.x/host_network_interface.rb +30 -0
  36. data/lib/virtualbox/com/interface/3.1.x/host_network_interface_medium_type.rb +11 -0
  37. data/lib/virtualbox/com/interface/3.1.x/host_network_interface_status.rb +11 -0
  38. data/lib/virtualbox/com/interface/3.1.x/host_network_interface_type.rb +11 -0
  39. data/lib/virtualbox/com/interface/3.1.x/host_usb_device.rb +13 -0
  40. data/lib/virtualbox/com/interface/3.1.x/host_usb_device_filter.rb +13 -0
  41. data/lib/virtualbox/com/interface/3.1.x/hw_virt_ex_property_type.rb +11 -0
  42. data/lib/virtualbox/com/interface/3.1.x/machine.rb +105 -0
  43. data/lib/virtualbox/com/interface/3.1.x/machine_state.rb +14 -0
  44. data/lib/virtualbox/com/interface/3.1.x/medium.rb +50 -0
  45. data/lib/virtualbox/com/interface/3.1.x/medium_attachment.rb +18 -0
  46. data/lib/virtualbox/com/interface/3.1.x/medium_format.rb +18 -0
  47. data/lib/virtualbox/com/interface/3.1.x/medium_state.rb +11 -0
  48. data/lib/virtualbox/com/interface/3.1.x/medium_type.rb +11 -0
  49. data/lib/virtualbox/com/interface/3.1.x/medium_variant.rb +11 -0
  50. data/lib/virtualbox/com/interface/3.1.x/network_adapter.rb +30 -0
  51. data/lib/virtualbox/com/interface/3.1.x/network_adapter_type.rb +11 -0
  52. data/lib/virtualbox/com/interface/3.1.x/network_attachment_type.rb +11 -0
  53. data/lib/virtualbox/com/interface/3.1.x/nsiexception.rb +23 -0
  54. data/lib/virtualbox/com/interface/3.1.x/nsisupports.rb +15 -0
  55. data/lib/virtualbox/com/interface/3.1.x/parallel_port.rb +17 -0
  56. data/lib/virtualbox/com/interface/3.1.x/port_mode.rb +11 -0
  57. data/lib/virtualbox/com/interface/3.1.x/progress.rb +63 -0
  58. data/lib/virtualbox/com/interface/3.1.x/serial_port.rb +19 -0
  59. data/lib/virtualbox/com/interface/3.1.x/session.rb +18 -0
  60. data/lib/virtualbox/com/interface/3.1.x/session_state.rb +11 -0
  61. data/lib/virtualbox/com/interface/3.1.x/session_type.rb +11 -0
  62. data/lib/virtualbox/com/interface/3.1.x/shared_folder.rb +17 -0
  63. data/lib/virtualbox/com/interface/3.1.x/snapshot.rb +20 -0
  64. data/lib/virtualbox/com/interface/3.1.x/storage_bus.rb +11 -0
  65. data/lib/virtualbox/com/interface/3.1.x/storage_controller.rb +23 -0
  66. data/lib/virtualbox/com/interface/3.1.x/storage_controller_type.rb +11 -0
  67. data/lib/virtualbox/com/interface/3.1.x/system_properties.rb +37 -0
  68. data/lib/virtualbox/com/interface/3.1.x/usb_controller.rb +20 -0
  69. data/lib/virtualbox/com/interface/3.1.x/usb_device.rb +24 -0
  70. data/lib/virtualbox/com/interface/3.1.x/usb_device_filter.rb +23 -0
  71. data/lib/virtualbox/com/interface/3.1.x/usb_device_filter_action.rb +11 -0
  72. data/lib/virtualbox/com/interface/3.1.x/usb_device_state.rb +11 -0
  73. data/lib/virtualbox/com/interface/3.1.x/virtual_box_error_info.rb +17 -0
  74. data/lib/virtualbox/com/interface/3.1.x/virtual_system_description.rb +19 -0
  75. data/lib/virtualbox/com/interface/3.1.x/virtual_system_description_type.rb +14 -0
  76. data/lib/virtualbox/com/interface/3.1.x/virtual_system_description_value_type.rb +11 -0
  77. data/lib/virtualbox/com/interface/3.1.x/virtualbox.rb +67 -0
  78. data/lib/virtualbox/com/interface/3.1.x/vrdp_auth_type.rb +11 -0
  79. data/lib/virtualbox/com/interface/3.1.x/vrdp_server.rb +19 -0
  80. data/lib/virtualbox/com/interface/3.2.x/appliance.rb +22 -0
  81. data/lib/virtualbox/com/interface/3.2.x/audio_adapter.rb +15 -0
  82. data/lib/virtualbox/com/interface/3.2.x/audio_controller_type.rb +11 -0
  83. data/lib/virtualbox/com/interface/3.2.x/audio_driver_type.rb +11 -0
  84. data/lib/virtualbox/com/interface/3.2.x/bios_boot_menu_mode.rb +11 -0
  85. data/lib/virtualbox/com/interface/3.2.x/bios_settings.rb +21 -0
  86. data/lib/virtualbox/com/interface/3.2.x/clipboard_mode.rb +11 -0
  87. data/lib/virtualbox/com/interface/3.2.x/console.rb +50 -0
  88. data/lib/virtualbox/com/interface/3.2.x/cpu_property_type.rb +11 -0
  89. data/lib/virtualbox/com/interface/3.2.x/device_type.rb +11 -0
  90. data/lib/virtualbox/com/interface/3.2.x/dhcp_server.rb +22 -0
  91. data/lib/virtualbox/com/interface/3.2.x/firmware_type.rb +11 -0
  92. data/lib/virtualbox/com/interface/3.2.x/guest.rb +13 -0
  93. data/lib/virtualbox/com/interface/3.2.x/guest_os_type.rb +33 -0
  94. data/lib/virtualbox/com/interface/3.2.x/host.rb +43 -0
  95. data/lib/virtualbox/com/interface/3.2.x/host_network_interface.rb +30 -0
  96. data/lib/virtualbox/com/interface/3.2.x/host_network_interface_medium_type.rb +11 -0
  97. data/lib/virtualbox/com/interface/3.2.x/host_network_interface_status.rb +11 -0
  98. data/lib/virtualbox/com/interface/3.2.x/host_network_interface_type.rb +11 -0
  99. data/lib/virtualbox/com/interface/3.2.x/host_usb_device.rb +13 -0
  100. data/lib/virtualbox/com/interface/3.2.x/host_usb_device_filter.rb +13 -0
  101. data/lib/virtualbox/com/interface/3.2.x/hw_virt_ex_property_type.rb +11 -0
  102. data/lib/virtualbox/com/interface/3.2.x/keyboard_hid_type.rb +11 -0
  103. data/lib/virtualbox/com/interface/3.2.x/machine.rb +118 -0
  104. data/lib/virtualbox/com/interface/3.2.x/machine_state.rb +14 -0
  105. data/lib/virtualbox/com/interface/3.2.x/medium.rb +51 -0
  106. data/lib/virtualbox/com/interface/3.2.x/medium_attachment.rb +18 -0
  107. data/lib/virtualbox/com/interface/3.2.x/medium_format.rb +18 -0
  108. data/lib/virtualbox/com/interface/3.2.x/medium_state.rb +11 -0
  109. data/lib/virtualbox/com/interface/3.2.x/medium_type.rb +11 -0
  110. data/lib/virtualbox/com/interface/3.2.x/medium_variant.rb +11 -0
  111. data/lib/virtualbox/com/interface/3.2.x/nat_alias_mode.rb +11 -0
  112. data/lib/virtualbox/com/interface/3.2.x/nat_engine.rb +27 -0
  113. data/lib/virtualbox/com/interface/3.2.x/nat_protocol.rb +11 -0
  114. data/lib/virtualbox/com/interface/3.2.x/network_adapter.rb +34 -0
  115. data/lib/virtualbox/com/interface/3.2.x/network_adapter_type.rb +11 -0
  116. data/lib/virtualbox/com/interface/3.2.x/network_attachment_type.rb +11 -0
  117. data/lib/virtualbox/com/interface/3.2.x/nsiexception.rb +23 -0
  118. data/lib/virtualbox/com/interface/3.2.x/nsisupports.rb +15 -0
  119. data/lib/virtualbox/com/interface/3.2.x/parallel_port.rb +17 -0
  120. data/lib/virtualbox/com/interface/3.2.x/pointing_hid_type.rb +11 -0
  121. data/lib/virtualbox/com/interface/3.2.x/port_mode.rb +11 -0
  122. data/lib/virtualbox/com/interface/3.2.x/progress.rb +63 -0
  123. data/lib/virtualbox/com/interface/3.2.x/serial_port.rb +19 -0
  124. data/lib/virtualbox/com/interface/3.2.x/session.rb +18 -0
  125. data/lib/virtualbox/com/interface/3.2.x/session_state.rb +11 -0
  126. data/lib/virtualbox/com/interface/3.2.x/session_type.rb +11 -0
  127. data/lib/virtualbox/com/interface/3.2.x/shared_folder.rb +17 -0
  128. data/lib/virtualbox/com/interface/3.2.x/snapshot.rb +20 -0
  129. data/lib/virtualbox/com/interface/3.2.x/storage_bus.rb +11 -0
  130. data/lib/virtualbox/com/interface/3.2.x/storage_controller.rb +24 -0
  131. data/lib/virtualbox/com/interface/3.2.x/storage_controller_type.rb +11 -0
  132. data/lib/virtualbox/com/interface/3.2.x/system_properties.rb +42 -0
  133. data/lib/virtualbox/com/interface/3.2.x/usb_controller.rb +21 -0
  134. data/lib/virtualbox/com/interface/3.2.x/usb_device.rb +24 -0
  135. data/lib/virtualbox/com/interface/3.2.x/usb_device_filter.rb +23 -0
  136. data/lib/virtualbox/com/interface/3.2.x/usb_device_filter_action.rb +11 -0
  137. data/lib/virtualbox/com/interface/3.2.x/usb_device_state.rb +11 -0
  138. data/lib/virtualbox/com/interface/3.2.x/virtual_box_error_info.rb +17 -0
  139. data/lib/virtualbox/com/interface/3.2.x/virtual_system_description.rb +19 -0
  140. data/lib/virtualbox/com/interface/3.2.x/virtual_system_description_type.rb +14 -0
  141. data/lib/virtualbox/com/interface/3.2.x/virtual_system_description_value_type.rb +11 -0
  142. data/lib/virtualbox/com/interface/3.2.x/virtualbox.rb +67 -0
  143. data/lib/virtualbox/com/interface/3.2.x/vrdp_auth_type.rb +11 -0
  144. data/lib/virtualbox/com/interface/3.2.x/vrdp_server.rb +21 -0
  145. data/lib/virtualbox/com/mscom_interface.rb +9 -4
  146. data/lib/virtualbox/com/nil_interface.rb +7 -0
  147. data/lib/virtualbox/com/util.rb +16 -2
  148. data/lib/virtualbox/com.rb +1 -1
  149. data/lib/virtualbox/cpu.rb +61 -0
  150. data/lib/virtualbox/dhcp_server.rb +89 -0
  151. data/lib/virtualbox/dvd.rb +2 -2
  152. data/lib/virtualbox/exceptions.rb +4 -0
  153. data/lib/virtualbox/ext/platform.rb +2 -2
  154. data/lib/virtualbox/extra_data.rb +5 -6
  155. data/lib/virtualbox/forwarded_port.rb +11 -7
  156. data/lib/virtualbox/global.rb +17 -6
  157. data/lib/virtualbox/hard_drive.rb +129 -66
  158. data/lib/virtualbox/host.rb +71 -0
  159. data/lib/virtualbox/host_network_interface.rb +137 -0
  160. data/lib/virtualbox/hw_virtualization.rb +12 -6
  161. data/lib/virtualbox/lib.rb +2 -2
  162. data/lib/virtualbox/media.rb +2 -2
  163. data/lib/virtualbox/medium.rb +10 -3
  164. data/lib/virtualbox/medium_attachment.rb +2 -2
  165. data/lib/virtualbox/network_adapter.rb +12 -4
  166. data/lib/virtualbox/proxies/collection.rb +26 -6
  167. data/lib/virtualbox/shared_folder.rb +22 -15
  168. data/lib/virtualbox/snapshot.rb +185 -0
  169. data/lib/virtualbox/storage_controller.rb +3 -3
  170. data/lib/virtualbox/system_properties.rb +1 -1
  171. data/lib/virtualbox/usb_controller.rb +8 -4
  172. data/lib/virtualbox/usb_device_filter.rb +74 -0
  173. data/lib/virtualbox/version.rb +12 -1
  174. data/lib/virtualbox/virtual_system_description.rb +4 -4
  175. data/lib/virtualbox/vm.rb +273 -64
  176. data/lib/virtualbox/vrdp_server.rb +59 -0
  177. data/test/test_helper.rb +7 -1
  178. data/test/virtualbox/abstract_model/attributable_test.rb +8 -0
  179. data/test/virtualbox/abstract_model/relatable_test.rb +5 -5
  180. data/test/virtualbox/abstract_model/validatable_test.rb +186 -3
  181. data/test/virtualbox/abstract_model_test.rb +3 -3
  182. data/test/virtualbox/appliance_test.rb +8 -1
  183. data/test/virtualbox/com/abstract_enum_test.rb +1 -0
  184. data/test/virtualbox/com/abstract_implementer_test.rb +4 -3
  185. data/test/virtualbox/com/abstract_interface_test.rb +3 -2
  186. data/test/virtualbox/com/ffi/interface_test.rb +4 -4
  187. data/test/virtualbox/com/ffi/util_test.rb +23 -1
  188. data/test/virtualbox/com/implementer/base_test.rb +4 -3
  189. data/test/virtualbox/com/implementer/ffi_test.rb +18 -10
  190. data/test/virtualbox/cpu_test.rb +103 -0
  191. data/test/virtualbox/dhcp_server_test.rb +165 -0
  192. data/test/virtualbox/extra_data_test.rb +4 -3
  193. data/test/virtualbox/forwarded_port_test.rb +17 -4
  194. data/test/virtualbox/hard_drive_test.rb +54 -5
  195. data/test/virtualbox/host_network_interface_test.rb +254 -0
  196. data/test/virtualbox/host_test.rb +94 -0
  197. data/test/virtualbox/network_adapter_test.rb +30 -1
  198. data/test/virtualbox/proxies/collection_test.rb +63 -21
  199. data/test/virtualbox/shared_folder_test.rb +16 -13
  200. data/test/virtualbox/snapshot_test.rb +231 -0
  201. data/test/virtualbox/storage_controller_test.rb +1 -1
  202. data/test/virtualbox/usb_controller_test.rb +7 -0
  203. data/test/virtualbox/usb_device_filter_test.rb +93 -0
  204. data/test/virtualbox/version_test.rb +13 -1
  205. data/test/virtualbox/vm_test.rb +245 -11
  206. data/test/virtualbox/vrdp_server_test.rb +83 -0
  207. data/virtualbox.gemspec +183 -97
  208. metadata +182 -96
  209. data/TODO +0 -9
  210. data/lib/virtualbox/com/interface/appliance.rb +0 -20
  211. data/lib/virtualbox/com/interface/audio_adapter.rb +0 -13
  212. data/lib/virtualbox/com/interface/audio_controller_type.rb +0 -9
  213. data/lib/virtualbox/com/interface/audio_driver_type.rb +0 -9
  214. data/lib/virtualbox/com/interface/bios_boot_menu_mode.rb +0 -9
  215. data/lib/virtualbox/com/interface/bios_settings.rb +0 -19
  216. data/lib/virtualbox/com/interface/clipboard_mode.rb +0 -9
  217. data/lib/virtualbox/com/interface/console.rb +0 -48
  218. data/lib/virtualbox/com/interface/cpu_property_type.rb +0 -9
  219. data/lib/virtualbox/com/interface/device_type.rb +0 -9
  220. data/lib/virtualbox/com/interface/dhcp_server.rb +0 -20
  221. data/lib/virtualbox/com/interface/firmware_type.rb +0 -9
  222. data/lib/virtualbox/com/interface/guest_os_type.rb +0 -21
  223. data/lib/virtualbox/com/interface/host.rb +0 -40
  224. data/lib/virtualbox/com/interface/host_network_interface.rb +0 -28
  225. data/lib/virtualbox/com/interface/host_network_interface_medium_type.rb +0 -9
  226. data/lib/virtualbox/com/interface/host_network_interface_status.rb +0 -9
  227. data/lib/virtualbox/com/interface/host_network_interface_type.rb +0 -9
  228. data/lib/virtualbox/com/interface/host_usb_device.rb +0 -11
  229. data/lib/virtualbox/com/interface/host_usb_device_filter.rb +0 -11
  230. data/lib/virtualbox/com/interface/hw_virt_ex_property_type.rb +0 -9
  231. data/lib/virtualbox/com/interface/machine.rb +0 -103
  232. data/lib/virtualbox/com/interface/machine_state.rb +0 -12
  233. data/lib/virtualbox/com/interface/medium.rb +0 -48
  234. data/lib/virtualbox/com/interface/medium_attachment.rb +0 -16
  235. data/lib/virtualbox/com/interface/medium_format.rb +0 -16
  236. data/lib/virtualbox/com/interface/medium_state.rb +0 -9
  237. data/lib/virtualbox/com/interface/medium_type.rb +0 -9
  238. data/lib/virtualbox/com/interface/medium_variant.rb +0 -9
  239. data/lib/virtualbox/com/interface/network_adapter.rb +0 -28
  240. data/lib/virtualbox/com/interface/network_adapter_type.rb +0 -9
  241. data/lib/virtualbox/com/interface/network_attachment_type.rb +0 -9
  242. data/lib/virtualbox/com/interface/nsiexception.rb +0 -21
  243. data/lib/virtualbox/com/interface/nsisupports.rb +0 -13
  244. data/lib/virtualbox/com/interface/parallel_port.rb +0 -15
  245. data/lib/virtualbox/com/interface/port_mode.rb +0 -9
  246. data/lib/virtualbox/com/interface/progress.rb +0 -58
  247. data/lib/virtualbox/com/interface/serial_port.rb +0 -17
  248. data/lib/virtualbox/com/interface/session.rb +0 -16
  249. data/lib/virtualbox/com/interface/session_state.rb +0 -9
  250. data/lib/virtualbox/com/interface/session_type.rb +0 -9
  251. data/lib/virtualbox/com/interface/shared_folder.rb +0 -15
  252. data/lib/virtualbox/com/interface/snapshot.rb +0 -18
  253. data/lib/virtualbox/com/interface/storage_bus.rb +0 -9
  254. data/lib/virtualbox/com/interface/storage_controller.rb +0 -21
  255. data/lib/virtualbox/com/interface/storage_controller_type.rb +0 -9
  256. data/lib/virtualbox/com/interface/system_properties.rb +0 -35
  257. data/lib/virtualbox/com/interface/usb_controller.rb +0 -18
  258. data/lib/virtualbox/com/interface/usb_device.rb +0 -22
  259. data/lib/virtualbox/com/interface/usb_device_filter.rb +0 -21
  260. data/lib/virtualbox/com/interface/usb_device_filter_action.rb +0 -9
  261. data/lib/virtualbox/com/interface/usb_device_state.rb +0 -9
  262. data/lib/virtualbox/com/interface/virtual_box_error_info.rb +0 -15
  263. data/lib/virtualbox/com/interface/virtual_system_description.rb +0 -17
  264. data/lib/virtualbox/com/interface/virtual_system_description_type.rb +0 -12
  265. data/lib/virtualbox/com/interface/virtual_system_description_value_type.rb +0 -9
  266. data/lib/virtualbox/com/interface/virtualbox.rb +0 -54
  267. data/lib/virtualbox/com/interface/vrdp_auth_type.rb +0 -9
  268. data/lib/virtualbox/com/interface/vrdp_server.rb +0 -17
@@ -98,6 +98,35 @@ class NetworkAdapterTest < Test::Unit::TestCase
98
98
  @instance = @klass.new(@parent, @interface)
99
99
  end
100
100
 
101
+ context "host interface object" do
102
+ setup do
103
+ @network_interfaces = []
104
+ @host = mock("host")
105
+ VirtualBox::Global.global.stubs(:host).returns(@host)
106
+ @host.stubs(:network_interfaces).returns(@network_interfaces)
107
+ end
108
+
109
+ def stub_interface(name)
110
+ interface = mock("interface")
111
+ interface.stubs(:name).returns(name)
112
+ @network_interfaces << interface
113
+ interface
114
+ end
115
+
116
+ should "return the network interface associated with the adapter" do
117
+ name = "foo"
118
+ result = stub_interface(name)
119
+ @instance.host_interface = name
120
+ assert_equal result, @instance.host_interface_object
121
+ end
122
+
123
+ should "return nil if the interface is not found" do
124
+ stub_interface("foo")
125
+ @instance.host_interface = "bar"
126
+ assert_nil @instance.host_interface_object
127
+ end
128
+ end
129
+
101
130
  context "saving" do
102
131
  setup do
103
132
  @adapter = mock("adapter")
@@ -157,4 +186,4 @@ class NetworkAdapterTest < Test::Unit::TestCase
157
186
  end
158
187
  end
159
188
  end
160
- end
189
+ end
@@ -3,43 +3,85 @@ require File.join(File.dirname(__FILE__), '..', '..', 'test_helper')
3
3
  class CollectionTest < Test::Unit::TestCase
4
4
  setup do
5
5
  @parent = mock("parent")
6
- @collection = VirtualBox::Proxies::Collection.new(@parent)
6
+ @item_klass = mock("item_klass")
7
+ @klass = VirtualBox::Proxies::Collection
8
+ @collection = @klass.new(@parent, @item_klass)
7
9
  end
8
10
 
9
11
  should "be a subclass of Array" do
10
12
  assert @collection.is_a?(Array)
11
13
  end
12
14
 
15
+ context "creating" do
16
+ should "call create on the item klass and put it in the array" do
17
+ result = mock("result")
18
+ @item_klass.expects(:create).with(@collection).returns(result)
19
+ @collection.create
20
+ assert @collection.include?(result)
21
+ end
22
+
23
+ should "pass in any additional arguments if given" do
24
+ blah = mock("some blah")
25
+ @collection = @klass.new(@parent, @item_klass, blah)
26
+ @item_klass.expects(:create).with(@collection, blah).returns(nil)
27
+ @collection.create
28
+ end
29
+
30
+ should "pass in additional arguments from the call" do
31
+ result = mock("result")
32
+ @item_klass.expects(:create).with(@collection, :foo).returns(result)
33
+ assert_equal result, @collection.create(:foo)
34
+ end
35
+
36
+ should "do nothing if klass doesn't respond to create" do
37
+ previous_length = @collection.length
38
+ assert_nothing_raised { assert_nil @collection.create }
39
+ assert_equal previous_length, @collection.length
40
+ end
41
+ end
42
+
13
43
  context "element callbacks" do
14
44
  setup do
15
45
  @item = mock("item")
16
46
  end
17
47
 
18
- should "not call added_to_relationship if it doesn't exist" do
19
- assert_nothing_raised { @collection << @item }
20
- end
48
+ context "<<" do
49
+ should "not call added_to_relationship if it doesn't exist" do
50
+ assert_nothing_raised { @collection << @item }
51
+ end
21
52
 
22
- should "not call removed_from_relationship if it doesn't exist" do
23
- @collection << @item
24
- assert_nothing_raised { @collection.delete(@item) }
53
+ should "call added_to_relationship on the item when its added to a collection" do
54
+ @item.expects(:added_to_relationship).with(@collection).once
55
+ @collection << @item
56
+ end
25
57
  end
26
58
 
27
- should "call added_to_relationship on the item when its added to a collection" do
28
- @item.expects(:added_to_relationship).with(@parent).once
29
- @collection << @item
30
- end
59
+ context "delete" do
60
+ should "not call removed_from_relationship if it doesn't exist" do
61
+ @collection << @item
62
+ assert_nothing_raised { @collection.delete(@item) }
63
+ end
64
+
65
+ should "call removed_from_relationship on the item when its deleted" do
66
+ @collection << @item
67
+ @item.expects(:removed_from_relationship).with(@collection).once
68
+ @collection.delete(@item)
69
+ end
31
70
 
32
- should "call removed_from_relationship on the item when its deleted" do
33
- @collection << @item
34
- @item.expects(:removed_from_relationship).with(@parent).once
35
- @collection.delete(@item)
71
+ should "not call removed_from_relationship if no_callback is set" do
72
+ @collection << @item
73
+ @item.expects(:removed_from_relationship).never
74
+ @collection.delete(@item, true)
75
+ end
36
76
  end
37
77
 
38
- should "call removed_from_relationship if clear is called" do
39
- @collection << @item
40
- @item.expects(:removed_from_relationship).with(@parent).once
41
- @collection.clear
42
- assert @collection.empty?
78
+ context "clearing" do
79
+ should "call removed_from_relationship if clear is called" do
80
+ @collection << @item
81
+ @item.expects(:removed_from_relationship).with(@collection).once
82
+ @collection.clear
83
+ assert @collection.empty?
84
+ end
43
85
  end
44
86
  end
45
- end
87
+ end
@@ -9,8 +9,8 @@ class SharedFolderTest < Test::Unit::TestCase
9
9
 
10
10
  context "initializing" do
11
11
  should "load attributes from the machine" do
12
- @klass.any_instance.expects(:initialize_attributes).with(@parent, @interface).once
13
- @klass.new(@parent, @interface)
12
+ @klass.any_instance.expects(:initialize_attributes).with(@interface).once
13
+ @klass.new(@interface)
14
14
  end
15
15
 
16
16
  should "not load attributes if new record" do
@@ -27,21 +27,16 @@ class SharedFolderTest < Test::Unit::TestCase
27
27
 
28
28
  should "load interface attribtues" do
29
29
  @klass.any_instance.expects(:load_interface_attributes).with(@interface).once
30
- @klass.new(@parent, @interface)
31
- end
32
-
33
- should "setup the parent" do
34
- instance = @klass.new(@parent, @interface)
35
- assert_equal @parent, instance.parent
30
+ @klass.new(@interface)
36
31
  end
37
32
 
38
33
  should "not be dirty" do
39
- @instance = @klass.new(@parent, @interface)
34
+ @instance = @klass.new(@interface)
40
35
  assert !@instance.changed?
41
36
  end
42
37
 
43
38
  should "be existing record" do
44
- @instance = @klass.new(@parent, @interface)
39
+ @instance = @klass.new(@interface)
45
40
  assert !@instance.new_record?
46
41
  end
47
42
  end
@@ -69,7 +64,7 @@ class SharedFolderTest < Test::Unit::TestCase
69
64
  new_seq = sequence("new_seq")
70
65
  @collection.each do |item|
71
66
  expected_value = "instance-#{item.inspect}"
72
- @klass.expects(:new).with(nil, item).in_sequence(new_seq).returns(expected_value)
67
+ @klass.expects(:new).with(item).in_sequence(new_seq).returns(expected_value)
73
68
  expected_result << expected_value
74
69
  end
75
70
 
@@ -93,7 +88,9 @@ class SharedFolderTest < Test::Unit::TestCase
93
88
  context "instance methods" do
94
89
  setup do
95
90
  @klass.any_instance.stubs(:load_interface_attributes)
96
- @instance = @klass.new(@parent, @interface)
91
+ @instance = @klass.new(@interface)
92
+ @collection = VirtualBox::Proxies::Collection.new(@parent)
93
+ @collection << @instance
97
94
 
98
95
  @parent_interface = mock("interface")
99
96
  @parent.stubs(:interface).returns(@parent_interface)
@@ -191,6 +188,12 @@ class SharedFolderTest < Test::Unit::TestCase
191
188
  @machine.stubs(:remove_shared_folder).with(@name)
192
189
  end
193
190
 
191
+ should "remove itself from it's collection" do
192
+ assert @collection.include?(@instance)
193
+ @instance.destroy
194
+ assert !@collection.include?(@instance)
195
+ end
196
+
194
197
  should "destroy the shared folder on the parent" do
195
198
  destroy_seq = sequence("destroy_seq")
196
199
  @machine.expects(:remove_shared_folder).with(@name).in_sequence(destroy_seq)
@@ -205,4 +208,4 @@ class SharedFolderTest < Test::Unit::TestCase
205
208
  end
206
209
  end
207
210
  end
208
- end
211
+ end
@@ -0,0 +1,231 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
+
3
+ class SnapshotTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = VirtualBox::Snapshot
6
+ @interface = mock("isnapshot")
7
+ end
8
+
9
+ context "class methods" do
10
+ context "populating relationships" do
11
+ setup do
12
+ @caller = mock("caller")
13
+ end
14
+
15
+ should "call populate_machine_relationship for VMs" do
16
+ vm = mock("vm")
17
+ vm.stubs(:is_a?).with(VirtualBox::COM::Util.versioned_interface(:Machine)).returns(true)
18
+ @klass.expects(:populate_machine_relationship).with(@caller, vm).once
19
+ @klass.populate_relationship(@caller, vm)
20
+ end
21
+
22
+ should "call populate_children_relationship for an array" do
23
+ @klass.expects(:populate_children_relationship).with(@caller, [1,2,3]).once
24
+ @klass.populate_relationship(@caller, [1,2,3])
25
+ end
26
+
27
+ should "call populate_parent_relationship for a snapshot" do
28
+ ss = mock("snapshot")
29
+ ss.stubs(:is_a?).returns(false)
30
+ ss.stubs(:is_a?).with(VirtualBox::COM::Util.versioned_interface(:Snapshot)).returns(true)
31
+ @klass.expects(:populate_parent_relationship).with(@caller, ss).once
32
+ @klass.populate_relationship(@caller, ss)
33
+ end
34
+
35
+ should "call populate_parent_relationship for nil" do
36
+ @klass.expects(:populate_parent_relationship).with(@caller, nil).once
37
+ @klass.populate_relationship(@caller, nil)
38
+ end
39
+ end
40
+
41
+ context "populating machine relationship" do
42
+ setup do
43
+ @caller = mock("caller")
44
+ @machine = mock("imachine")
45
+ @snapshot = mock("snapshot")
46
+ @machine.stubs(:current_snapshot).returns(@snapshot)
47
+ end
48
+
49
+ should "just initialize with machine" do
50
+ result = mock("result")
51
+ @klass.expects(:new).with(@snapshot).once.returns(result)
52
+ assert_equal result, @klass.populate_machine_relationship(@caller, @machine)
53
+ end
54
+
55
+ should "return nil if there is no current snapshot" do
56
+ @machine.expects(:current_snapshot).returns(nil)
57
+ assert_nil @klass.populate_machine_relationship(@caller, @machine)
58
+ end
59
+ end
60
+
61
+ context "populating parent relationship" do
62
+ setup do
63
+ @caller = mock("caller")
64
+ @parent = mock("parent")
65
+ end
66
+
67
+ should "just initialize with data" do
68
+ result = mock("result")
69
+ @klass.expects(:new).with(@parent).once.returns(result)
70
+ assert_equal result, @klass.populate_parent_relationship(@caller, @parent)
71
+ end
72
+
73
+ should "return nil if there is no parent" do
74
+ assert_nil @klass.populate_parent_relationship(@caller, nil)
75
+ end
76
+ end
77
+
78
+ context "populating children relationship" do
79
+ setup do
80
+ @instance = mock("instance")
81
+
82
+ @klass.stubs(:new).returns(@instance)
83
+ end
84
+
85
+ should "return a proxied collection" do
86
+ result = @klass.populate_children_relationship(nil, [])
87
+ assert result.is_a?(VirtualBox::Proxies::Collection)
88
+ end
89
+
90
+ should "call new for every machine" do
91
+ snapshots = []
92
+ 5.times { |i| snapshots << mock("s#{i}") }
93
+
94
+ expected_result = []
95
+ new_seq = sequence("new_seq")
96
+ snapshots.each do |snapshot|
97
+ expected_value = "instance-#{snapshot.inspect}"
98
+ @klass.expects(:new).with(snapshot).in_sequence(new_seq).returns(expected_value)
99
+ expected_result << expected_value
100
+ end
101
+
102
+ assert_equal expected_result, @klass.populate_children_relationship(nil, snapshots)
103
+ end
104
+ end
105
+ end
106
+
107
+ context "initializing" do
108
+ should "load attributes from the snapshot" do
109
+ @klass.any_instance.expects(:initialize_attributes).with(@interface).once
110
+ @klass.new(@interface)
111
+ end
112
+
113
+ should "set the interface as the interface attribute" do
114
+ @klass.any_instance.stubs(:initialize_attributes)
115
+ instance = @klass.new(@interface)
116
+ assert_equal @interface, instance.interface
117
+ end
118
+ end
119
+
120
+ context "initializing attributes" do
121
+ setup do
122
+ @interface.stubs(:refresh_state)
123
+ @klass.any_instance.stubs(:load_interface_attributes)
124
+ end
125
+
126
+ should "load interface attribtues" do
127
+ @klass.any_instance.expects(:load_interface_attributes).with(@interface).once
128
+ @klass.new(@interface)
129
+ end
130
+
131
+ should "not be dirty" do
132
+ @instance = @klass.new(@interface)
133
+ assert !@instance.changed?
134
+ end
135
+
136
+ should "be existing record" do
137
+ @instance = @klass.new(@interface)
138
+ assert !@instance.new_record?
139
+ end
140
+ end
141
+
142
+ context "with an instance" do
143
+ setup do
144
+ @klass.any_instance.stubs(:initialize_attributes)
145
+ @instance = @klass.new(@interface)
146
+ end
147
+
148
+ context "timestamp" do
149
+ setup do
150
+ @time = Time.at(Time.now.to_i, 0)
151
+ @timestamp = @time.to_i * 1000
152
+ @instance.stubs(:read_attribute).with(:time_stamp).returns(@timestamp)
153
+ end
154
+
155
+ should "convert to a Time object" do
156
+ assert @instance.time_stamp.is_a?(Time)
157
+ end
158
+
159
+ should "convert to a proper Time object" do
160
+ value = @instance.time_stamp
161
+ assert @time.eql?(value), "#{@time} != #{value}"
162
+ end
163
+ end
164
+
165
+ context "destroying" do
166
+ setup do
167
+ @machine = mock("machine")
168
+ @session = mock("session")
169
+ @console = mock("console")
170
+ @progress = mock("progress")
171
+ @uuid = "UUID!"
172
+
173
+ @instance.stubs(:uuid).returns(@uuid)
174
+ @instance.stubs(:machine).returns(@machine)
175
+ @machine.stubs(:with_open_session).yields(@session)
176
+ @session.stubs(:console).returns(@console)
177
+ @console.stubs(:delete_snapshot).returns(@progress)
178
+ @progress.stubs(:wait)
179
+ end
180
+
181
+ should "delete the proper snapshot" do
182
+ @console.expects(:delete_snapshot).with(@instance.uuid).once.returns(@progress)
183
+ @progress.expects(:wait)
184
+
185
+ @instance.destroy
186
+ end
187
+
188
+ should "pass in block to the wait method" do
189
+ foo = mock("foo")
190
+ @progress.expects(:wait).yields(foo)
191
+ foo.expects(:called).once
192
+
193
+ @instance.destroy do |obj|
194
+ obj.called
195
+ end
196
+ end
197
+ end
198
+
199
+ context "restoring" do
200
+ setup do
201
+ @machine = mock("machine")
202
+ @session = mock("session")
203
+ @console = mock("console")
204
+ @progress = mock("progress")
205
+
206
+ @instance.stubs(:machine).returns(@machine)
207
+ @machine.stubs(:with_open_session).yields(@session)
208
+ @session.stubs(:console).returns(@console)
209
+ @console.stubs(:restore_snapshot).returns(@progress)
210
+ @progress.stubs(:wait)
211
+ end
212
+
213
+ should "restore the proper snapshot" do
214
+ @console.expects(:restore_snapshot).with(@instance.interface).once.returns(@progress)
215
+ @progress.expects(:wait)
216
+
217
+ @instance.restore
218
+ end
219
+
220
+ should "pass in block to the wait method" do
221
+ foo = mock("foo")
222
+ @progress.expects(:wait).yields(foo)
223
+ foo.expects(:called).once
224
+
225
+ @instance.restore do |obj|
226
+ obj.called
227
+ end
228
+ end
229
+ end
230
+ end
231
+ end
@@ -16,7 +16,7 @@ class StorageControllerTest < Test::Unit::TestCase
16
16
  end
17
17
 
18
18
  should "populate array relationship if IMachine is given" do
19
- @interface.expects(:is_a?).with(VirtualBox::COM::Interface::Machine).returns(true)
19
+ @interface.expects(:is_a?).with(VirtualBox::COM::Util.versioned_interface(:Machine)).returns(true)
20
20
  @klass.expects(:populate_array_relationship).once.with(@parent, @interface)
21
21
  @klass.populate_relationship(@parent, @interface)
22
22
  end
@@ -16,6 +16,7 @@ class USBControllerTest < Test::Unit::TestCase
16
16
  context "initializing attributes" do
17
17
  setup do
18
18
  @klass.any_instance.stubs(:load_interface_attributes)
19
+ @klass.any_instance.stubs(:populate_relationships)
19
20
  end
20
21
 
21
22
  should "load interface attribtues" do
@@ -23,6 +24,11 @@ class USBControllerTest < Test::Unit::TestCase
23
24
  @klass.new(@parent, @interface)
24
25
  end
25
26
 
27
+ should "populate relationships" do
28
+ @klass.any_instance.expects(:populate_relationships).with(@interface).once
29
+ @klass.new(@parent, @interface)
30
+ end
31
+
26
32
  should "setup the parent" do
27
33
  instance = @klass.new(@parent, @interface)
28
34
  assert_equal @parent, instance.parent
@@ -82,6 +88,7 @@ class USBControllerTest < Test::Unit::TestCase
82
88
  context "instance methods" do
83
89
  setup do
84
90
  @klass.any_instance.stubs(:load_interface_attributes)
91
+ @klass.any_instance.stubs(:populate_relationship)
85
92
  @instance = @klass.new(@parent, @interface)
86
93
  end
87
94
 
@@ -0,0 +1,93 @@
1
+ require File.join(File.dirname(__FILE__), '..', 'test_helper')
2
+
3
+ class USBDeviceFilterTestTest < Test::Unit::TestCase
4
+ setup do
5
+ @klass = VirtualBox::USBDeviceFilter
6
+ @interface = mock("interface")
7
+ end
8
+
9
+ context "class methods" do
10
+ context "populating relationships" do
11
+ setup do
12
+ @instance = mock("instance")
13
+
14
+ @interface.stubs(:device_filters).returns([])
15
+ @klass.stubs(:new).returns(@instance)
16
+ end
17
+
18
+ should "return a proxied collection" do
19
+ result = @klass.populate_relationship(nil, @interface)
20
+ assert result.is_a?(VirtualBox::Proxies::Collection)
21
+ end
22
+
23
+ should "call new for every interface" do
24
+ collection = []
25
+ @interface.stubs(:device_filters).returns(collection)
26
+ 5.times { |i| collection << mock("a#{i}") }
27
+
28
+ expected_result = []
29
+ new_seq = sequence("new_seq")
30
+ collection.each do |item|
31
+ expected_value = "instance-#{item.inspect}"
32
+ @klass.expects(:new).with(item).in_sequence(new_seq).returns(expected_value)
33
+ expected_result << expected_value
34
+ end
35
+
36
+ assert_equal expected_result, @klass.populate_relationship(@parent, @interface)
37
+ end
38
+ end
39
+
40
+ context "saving relationship" do
41
+ setup do
42
+ @item = mock("item")
43
+ end
44
+
45
+ should "just call save on the item" do
46
+ @item.expects(:save)
47
+ @klass.save_relationship(nil, @item)
48
+ end
49
+ end
50
+ end
51
+
52
+ context "initializing" do
53
+ should "load attributes from the machine" do
54
+ @klass.any_instance.expects(:initialize_attributes).with(@interface).once
55
+ @klass.new(@interface)
56
+ end
57
+ end
58
+
59
+ context "initializing attributes" do
60
+ setup do
61
+ @klass.any_instance.stubs(:load_interface_attributes)
62
+ end
63
+
64
+ should "load interface attribtues" do
65
+ @klass.any_instance.expects(:load_interface_attributes).with(@interface).once
66
+ @klass.new(@interface)
67
+ end
68
+
69
+ should "not be dirty" do
70
+ @instance = @klass.new(@interface)
71
+ assert !@instance.changed?
72
+ end
73
+
74
+ should "be existing record" do
75
+ @instance = @klass.new(@interface)
76
+ assert !@instance.new_record?
77
+ end
78
+ end
79
+
80
+ context "instance methods" do
81
+ setup do
82
+ @klass.any_instance.stubs(:load_interface_attributes)
83
+
84
+ @parent = mock("parent")
85
+ @interface = mock("interface")
86
+ @instance = @klass.new(@interface)
87
+ @instance.stubs(:interface).returns(@interface)
88
+ @instance.stubs(:parent).returns(@parent)
89
+ @collection = VirtualBox::Proxies::Collection.new(@parent)
90
+ @collection << @instance
91
+ end
92
+ end
93
+ end
@@ -15,6 +15,18 @@ class VersionTest < Test::Unit::TestCase
15
15
  @module = VersionTestMod
16
16
  end
17
17
 
18
+ context "checking if supported version of VirtualBox" do
19
+ should "return true if version is not nil" do
20
+ @module.stubs(:version).returns(:foo)
21
+ assert @module.supported?
22
+ end
23
+
24
+ should "return false if version is nil" do
25
+ @module.stubs(:version).returns(nil)
26
+ assert !@module.supported?
27
+ end
28
+ end
29
+
18
30
  should "return the version" do
19
31
  version = mock("version")
20
32
  @vbox.expects(:version).returns(version)
@@ -31,4 +43,4 @@ class VersionTest < Test::Unit::TestCase
31
43
  @vbox.expects(:revision).returns(revision)
32
44
  assert_equal revision, @module.revision
33
45
  end
34
- end
46
+ end