~ubuntu-branches/ubuntu/quantal/simple-xml/quantal

« back to all changes in this revision

Viewing changes to test/src/org/simpleframework/xml/convert/RegistryCycleStrategyTest.java

  • Committer: Bazaar Package Importer
  • Author(s): Sylvestre Ledru, Fabian Köster
  • Date: 2010-03-05 19:44:34 UTC
  • mfrom: (1.1.1 upstream)
  • Revision ID: james.westby@ubuntu.com-20100305194434-d9mwhyioc9npo9it
Tags: 2.3.2-1
* Standards-Version updated to version 3.8.4

[ Fabian Köster ]
* New upstream release
* Correct license information in debian/pom.xml
* Exclude generated Javadoc from orig-tarball

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
package org.simpleframework.xml.convert;
 
2
 
 
3
import java.io.StringWriter;
 
4
import java.util.ArrayList;
 
5
import java.util.List;
 
6
 
 
7
import org.simpleframework.xml.ElementList;
 
8
import org.simpleframework.xml.Root;
 
9
import org.simpleframework.xml.ValidationTestCase;
 
10
import org.simpleframework.xml.convert.ExampleConverters.Cat;
 
11
import org.simpleframework.xml.convert.ExampleConverters.CatConverter;
 
12
import org.simpleframework.xml.convert.ExampleConverters.Dog;
 
13
import org.simpleframework.xml.convert.ExampleConverters.DogConverter;
 
14
import org.simpleframework.xml.convert.ExampleConverters.Pet;
 
15
import org.simpleframework.xml.core.Persister;
 
16
import org.simpleframework.xml.strategy.CycleStrategy;
 
17
 
 
18
public class RegistryCycleStrategyTest extends ValidationTestCase {
 
19
 
 
20
   @Root
 
21
   public static class PetBucket {
 
22
      @ElementList(inline=true)
 
23
      private List<Pet> list = new ArrayList<Pet>();
 
24
      public void addPet(Pet pet){
 
25
         list.add(pet);
 
26
      }
 
27
      public List<Pet> getPets(){
 
28
         return list;
 
29
      }
 
30
   }
 
31
   
 
32
   public void testCycle() throws Exception {
 
33
      Registry registry = new Registry();
 
34
      CycleStrategy inner = new CycleStrategy();
 
35
      RegistryStrategy strategy = new RegistryStrategy(registry, inner);
 
36
      Persister persister = new Persister(strategy);
 
37
      PetBucket bucket = new PetBucket();
 
38
      StringWriter writer = new StringWriter();
 
39
      
 
40
      registry.bind(Cat.class, CatConverter.class);
 
41
      registry.bind(Dog.class, DogConverter.class);
 
42
   
 
43
      Pet kitty = new Cat("Kitty", 10);
 
44
      Pet lassie = new Dog("Lassie", 7);
 
45
      Pet ben = new Dog("Ben", 8);
 
46
      
 
47
      bucket.addPet(kitty);
 
48
      bucket.addPet(lassie);
 
49
      bucket.addPet(ben);
 
50
      bucket.addPet(lassie);
 
51
      bucket.addPet(kitty);
 
52
      
 
53
      persister.write(bucket, writer);
 
54
      persister.write(bucket, System.out);
 
55
   
 
56
      String text = writer.toString();
 
57
      PetBucket copy = persister.read(PetBucket.class, text);
 
58
      
 
59
      assertEquals(copy.getPets().get(0), bucket.getPets().get(0));
 
60
      assertEquals(copy.getPets().get(1), bucket.getPets().get(1));
 
61
      assertEquals(copy.getPets().get(2), bucket.getPets().get(2));
 
62
      assertEquals(copy.getPets().get(3), bucket.getPets().get(3));
 
63
      assertEquals(copy.getPets().get(4), bucket.getPets().get(4));
 
64
      
 
65
      assertTrue(copy.getPets().get(0) == copy.getPets().get(4)); // cycle
 
66
      assertTrue(copy.getPets().get(1) == copy.getPets().get(3)); // cycle
 
67
 
 
68
      assertElementExists(text, "/petBucket");
 
69
      assertElementExists(text, "/petBucket/pet");
 
70
      assertElementHasAttribute(text, "/petBucket", "id", "0");
 
71
      assertElementHasAttribute(text, "/petBucket/pet[0]", "id", "1");
 
72
      assertElementHasAttribute(text, "/petBucket/pet[1]", "id", "2");
 
73
      assertElementHasAttribute(text, "/petBucket/pet[2]", "id", "3");
 
74
      assertElementHasAttribute(text, "/petBucket/pet[3]", "reference", "2");
 
75
      assertElementHasAttribute(text, "/petBucket/pet[4]", "reference", "1");
 
76
      assertElementHasValue(text, "/petBucket/pet[0]/name", "Kitty");
 
77
      assertElementHasValue(text, "/petBucket/pet[0]/age", "10");
 
78
      assertElementHasAttribute(text, "/petBucket/pet[0]", "class", Cat.class.getName());
 
79
      assertElementHasAttribute(text, "/petBucket/pet[1]", "class", Dog.class.getName());
 
80
   }
 
81
   
 
82
}