few tests to fail immmutable object creation
diff --git a/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java b/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java
new file mode 100644
index 0000000..937ab09
--- /dev/null
+++ b/src/test/java/org/yaml/snakeyaml/immutable/ImmutablesRepresenter.java
@@ -0,0 +1,82 @@
+/**
+ * Copyright (c) 2008-2010, http://code.google.com/p/snakeyaml/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.yaml.snakeyaml.immutable;
+
+import java.awt.Insets;
+import java.awt.Rectangle;
+import java.util.Arrays;
+
+import javax.swing.border.MatteBorder;
+
+import org.yaml.snakeyaml.nodes.Node;
+import org.yaml.snakeyaml.nodes.Tag;
+import org.yaml.snakeyaml.representer.Represent;
+import org.yaml.snakeyaml.representer.Representer;
+
+public class ImmutablesRepresenter extends Representer {
+
+ public ImmutablesRepresenter() {
+ super();
+ this.representers.put(java.awt.Color.class, new RepresentColor());
+ this.representers.put(Insets.class, new RepresentInsets());
+ this.representers.put(MatteBorder.class, new RepresentMatteBorder());
+ this.representers.put(Rectangle.class, new RepresentRectangle());
+ }
+
+ class RepresentInsets implements Represent {
+
+ public Node representData(Object data) {
+ Insets insets = (Insets) data;
+ return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays
+ .asList(new Object[] { insets.top, insets.left, insets.bottom, insets.right }),
+ true);
+ }
+
+ }
+
+ class RepresentRectangle implements Represent {
+
+ public Node representData(Object data) {
+ Rectangle rect = (Rectangle) data;
+ return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays
+ .asList(new Object[] { rect.x, rect.y, rect.width, rect.height }), true);
+ }
+
+ }
+
+ class RepresentMatteBorder implements Represent {
+
+ public Node representData(Object data) {
+ MatteBorder mb = (MatteBorder) data;
+ return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays
+ .asList(new Object[] { mb.getBorderInsets(),
+ mb.getMatteColor() }), true);
+ }
+
+ }
+
+ class RepresentColor implements Represent {
+
+ public Node representData(Object data) {
+ java.awt.Color color = (java.awt.Color) data;
+ return representSequence(getTag(data.getClass(), new Tag(data.getClass())), Arrays
+ .asList(new Integer[] { color.getRed(), color.getGreen(), color.getBlue(),
+ color.getAlpha() }), true);
+ }
+
+ }
+}
diff --git a/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java b/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java
new file mode 100644
index 0000000..0cac852
--- /dev/null
+++ b/src/test/java/org/yaml/snakeyaml/immutable/MoreImmutablesTest.java
@@ -0,0 +1,79 @@
+/**
+ * Copyright (c) 2008-2010, http://code.google.com/p/snakeyaml/
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.yaml.snakeyaml.immutable;
+
+import java.awt.Color;
+import java.awt.Insets;
+import java.awt.Rectangle;
+
+import javax.swing.BorderFactory;
+import javax.swing.border.MatteBorder;
+
+import org.yaml.snakeyaml.Dumper;
+import org.yaml.snakeyaml.DumperOptions;
+import org.yaml.snakeyaml.Loader;
+import org.yaml.snakeyaml.Yaml;
+
+import junit.framework.TestCase;
+
+public class MoreImmutablesTest extends TestCase {
+
+ public void testInsets() {
+ Yaml yaml = new Yaml(new Loader(), new Dumper(new ImmutablesRepresenter(), new DumperOptions()));
+ Insets insets = new Insets(10, 20, 30, 40);
+ String dump = yaml.dump(insets);
+ assertEquals("!!java.awt.Insets [10, 20, 30, 40]\n", dump);
+ Object loaded = yaml.load(dump);
+ assertEquals(insets, loaded);
+ }
+
+ public void testAwtColor() {
+ Yaml yaml = new Yaml(new Loader(), new Dumper(new ImmutablesRepresenter(), new DumperOptions()));
+ Color color = new Color(10, 20, 30, 40);
+ String dump = yaml.dump(color);
+ assertEquals("!!java.awt.Color [10, 20, 30, 40]\n", dump);
+ Object loaded = yaml.load(dump);
+ assertEquals(color, loaded);
+ }
+
+ public void testRectangle() {
+ Yaml yaml = new Yaml(new Loader(), new Dumper(new ImmutablesRepresenter(), new DumperOptions()));
+ Rectangle rect = new Rectangle(10, 20, 30, 40);
+ String dump = yaml.dump(rect);
+ assertEquals("!!java.awt.Rectangle [10, 20, 30, 40]\n", dump);
+ Object loaded = yaml.load(dump);
+ assertEquals(rect, loaded);
+ }
+
+ // matteborder - only with color - no icon
+ public void testMatteBorder() {
+ DumperOptions options = new DumperOptions();
+ options.setWidth(400);
+ Yaml yaml = new Yaml(new Loader(), new Dumper(new ImmutablesRepresenter(), options));
+ Insets insets = new Insets(10, 20, 30, 40);
+ Color color = new Color(100, 150, 200);
+ MatteBorder border = BorderFactory.createMatteBorder(insets.top, insets.left, insets.bottom, insets.right, color);
+ String dump = yaml.dump(border);
+ assertEquals("!!javax.swing.border.MatteBorder [!!java.awt.Insets [10, 20, 30, 40], !!java.awt.Color [100, 150, 200, 255]]\n", dump);
+ Object loaded = yaml.load(dump);
+ assertTrue(loaded instanceof MatteBorder);
+ MatteBorder loadedBorder = (MatteBorder) loaded;
+ assertEquals(insets, loadedBorder.getBorderInsets());
+ assertEquals(color, loadedBorder.getMatteColor());
+ }
+
+}