/specs/core/variant.ds

http://github.com/wilkie/djehuty · Unknown · 65 lines · 55 code · 10 blank · 0 comment · 0 complexity · 004e054306609975b356d2006697acfb MD5 · raw file

  1. module specs.core.variant;
  2. import testing.support;
  3. import core.variant;
  4. describe variant() {
  5. describe initial_state() {
  6. it should_be_null() {
  7. Variant var;
  8. should(var.type == Type.Reference);
  9. should(var.to!(Object) is null);
  10. }
  11. }
  12. describe assignment() {
  13. it should_handle_integer_literals() {
  14. Variant var = 2;
  15. should(var == 2);
  16. should(var.to!(int) == 2);
  17. }
  18. it should_handle_reassignment() {
  19. Variant var = 2;
  20. var = 3;
  21. should(var == 3);
  22. var = "foo";
  23. should(var == "foo");
  24. }
  25. it should_handle_object_references() {
  26. Object foo = new Object();
  27. Variant var = foo;
  28. should(var == foo);
  29. }
  30. it should_handle_float_literals() {
  31. Variant var = 0.5;
  32. should(var == 0.5);
  33. should(var.to!(float) == 0.5);
  34. }
  35. }
  36. describe comparison() {
  37. it should_handle_int() {
  38. int a = 2;
  39. Variant var = a;
  40. should(var == a);
  41. should(var == 2);
  42. }
  43. it should_handle_float() {
  44. float a = 1.23;
  45. Variant var = a;
  46. should(var == a);
  47. }
  48. it should_handle_string() {
  49. string a = "hello";
  50. Variant var = a;
  51. should(var == a);
  52. should(var == "hello");
  53. }
  54. }
  55. }