/* * Copyright (C) 2007 XStream Committers. * All rights reserved. * * The software in this package is published under the terms of the BSD * style license a copy of which has been included with this distribution in * the LICENSE.txt file. * * Created on 10. April 2007 by Guilherme Silveira */ package com.thoughtworks.acceptance; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.converters.reflection.FieldDictionary; import com.thoughtworks.xstream.converters.reflection.PureJavaReflectionProvider; import com.thoughtworks.xstream.converters.reflection.SortableFieldKeySorter; public class SortableFieldListTest extends AbstractAcceptanceTest { public void testSortsFieldOrderWithArray() { SortableFieldKeySorter sorter = new SortableFieldKeySorter(); sorter.registerFieldOrder(MommyBear.class, new String[] { "b", "c", "a" }); xstream = new XStream(new PureJavaReflectionProvider(new FieldDictionary(sorter))); xstream.alias("mommy", MommyBear.class); MommyBear root = new MommyBear(); root.c = "ccc"; root.b = "bbb"; root.a = "aaa"; assertBothWays(root, "<mommy>\n" + " <b>bbb</b>\n" + " <c>ccc</c>\n" + " <a>aaa</a>\n" + "</mommy>"); } public void testSortsFieldOrderWhileUsingInheritance() { SortableFieldKeySorter sorter = new SortableFieldKeySorter(); sorter.registerFieldOrder(BabyBear.class, new String[] { "b", "d", "c", "a" }); xstream = new XStream(new PureJavaReflectionProvider(new FieldDictionary(sorter))); xstream.alias("baby", BabyBear.class); BabyBear root = new BabyBear(); root.c = "ccc"; root.b = "bbb"; root.a = "aaa"; root.d = "ddd"; assertBothWays(root, "<baby>\n" + " <b>bbb</b>\n" + " <d>ddd</d>\n" + " <c>ccc</c>\n" + " <a>aaa</a>\n" + "</baby>"); } public static class MommyBear { protected String c, a, b; } public static class BabyBear extends MommyBear { private String d; } }