You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ObjectPropertyTest.java 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package com.vaadin.data.util;
  2. import org.junit.Assert;
  3. import org.junit.Test;
  4. public class ObjectPropertyTest {
  5. public static class TestSuperClass {
  6. private String name;
  7. public TestSuperClass(String name) {
  8. this.name = name;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. @Override
  14. public String toString() {
  15. return getName();
  16. }
  17. }
  18. public static class TestSubClass extends TestSuperClass {
  19. public TestSubClass(String name) {
  20. super("Subclass: " + name);
  21. }
  22. }
  23. private TestSuperClass super1 = new TestSuperClass("super1");
  24. private TestSubClass sub1 = new TestSubClass("sub1");
  25. @Test
  26. public void testSimple() {
  27. ObjectProperty<TestSuperClass> prop1 = new ObjectProperty<TestSuperClass>(
  28. super1, TestSuperClass.class);
  29. Assert.assertEquals("super1", prop1.getValue().getName());
  30. prop1 = new ObjectProperty<TestSuperClass>(super1);
  31. Assert.assertEquals("super1", prop1.getValue().getName());
  32. ObjectProperty<TestSubClass> prop2 = new ObjectProperty<TestSubClass>(
  33. sub1, TestSubClass.class);
  34. Assert.assertEquals("Subclass: sub1", prop2.getValue().getName());
  35. prop2 = new ObjectProperty<TestSubClass>(sub1);
  36. Assert.assertEquals("Subclass: sub1", prop2.getValue().getName());
  37. }
  38. @Test
  39. public void testSetValueObjectSuper() {
  40. ObjectProperty<TestSuperClass> prop = new ObjectProperty<TestSuperClass>(
  41. super1, TestSuperClass.class);
  42. Assert.assertEquals("super1", prop.getValue().getName());
  43. prop.setValue(new TestSuperClass("super2"));
  44. Assert.assertEquals("super1", super1.getName());
  45. Assert.assertEquals("super2", prop.getValue().getName());
  46. }
  47. @Test
  48. public void testSetValueObjectSub() {
  49. ObjectProperty<TestSubClass> prop = new ObjectProperty<TestSubClass>(
  50. sub1, TestSubClass.class);
  51. Assert.assertEquals("Subclass: sub1", prop.getValue().getName());
  52. prop.setValue(new TestSubClass("sub2"));
  53. Assert.assertEquals("Subclass: sub1", sub1.getName());
  54. Assert.assertEquals("Subclass: sub2", prop.getValue().getName());
  55. }
  56. @Test
  57. public void testSetValueStringSuper() {
  58. ObjectProperty<TestSuperClass> prop = new ObjectProperty<TestSuperClass>(
  59. super1, TestSuperClass.class);
  60. Assert.assertEquals("super1", prop.getValue().getName());
  61. prop.setValue(new TestSuperClass("super2"));
  62. Assert.assertEquals("super1", super1.getName());
  63. Assert.assertEquals("super2", prop.getValue().getName());
  64. }
  65. @Test
  66. public void testSetValueStringSub() {
  67. ObjectProperty<TestSubClass> prop = new ObjectProperty<TestSubClass>(
  68. sub1, TestSubClass.class);
  69. Assert.assertEquals("Subclass: sub1", prop.getValue().getName());
  70. prop.setValue(new TestSubClass("sub2"));
  71. Assert.assertEquals("Subclass: sub1", sub1.getName());
  72. Assert.assertEquals("Subclass: sub2", prop.getValue().getName());
  73. }
  74. @Test
  75. public void testMixedGenerics() {
  76. ObjectProperty<TestSuperClass> prop = new ObjectProperty<TestSuperClass>(
  77. sub1);
  78. Assert.assertEquals("Subclass: sub1", prop.getValue().getName());
  79. Assert.assertEquals(prop.getType(), TestSubClass.class);
  80. // create correct subclass based on the runtime type of the instance
  81. // given to ObjectProperty constructor, which is a subclass of the type
  82. // parameter
  83. prop.setValue(new TestSubClass("sub2"));
  84. Assert.assertEquals("Subclass: sub2", prop.getValue().getName());
  85. }
  86. }