/** * Copyright (C) 2010 Michael Mosmann <michael@mosmann.de> * * 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 de.flapdoodle.mongoom.testlab; import java.util.HashSet; import junit.framework.TestCase; import org.bson.types.ObjectId; import com.google.common.collect.Sets; import com.mongodb.DBObject; import de.flapdoodle.mongoom.exceptions.MappingException; import de.flapdoodle.mongoom.mapping.IEntityTransformation; import de.flapdoodle.mongoom.mapping.ITransformation; import de.flapdoodle.mongoom.mapping.context.IMappingContext; import de.flapdoodle.mongoom.mapping.context.MappingContext; import de.flapdoodle.mongoom.mapping.entities.EntityVisitor; import de.flapdoodle.mongoom.mapping.types.ReferenceTransformation; import de.flapdoodle.mongoom.testlab.beans.BadLoopDummy; import de.flapdoodle.mongoom.testlab.beans.Dummy; import de.flapdoodle.mongoom.testlab.beans.Flip; import de.flapdoodle.mongoom.testlab.beans.FlipFlopDummy; import de.flapdoodle.mongoom.testlab.beans.Flop; import de.flapdoodle.mongoom.testlab.beans.Foo; import de.flapdoodle.mongoom.testlab.beans.Loop; import de.flapdoodle.mongoom.testlab.beans.LoopDummy; import de.flapdoodle.mongoom.types.Reference; public class TestTransformation extends TestCase { public void testReference() { Dummy dummy = new Dummy(); ReferenceTransformation<Dummy> trans = new ReferenceTransformation<Dummy>(Dummy.class); Reference<Dummy> reference = trans.asEntity(new ObjectId()); assertNotNull(reference); ObjectId objectId = trans.asObject(reference); assertNotNull(objectId); } public void testParser() { IMappingContext mappingContext = new MappingContext(); EntityVisitor<Dummy> entityVisitor = new EntityVisitor<Dummy>(); IEntityTransformation<Dummy> transformation = entityVisitor.transformation(mappingContext, Dummy.class); assertNotNull(transformation); Dummy dummy = newDummy(); DBObject dbObject = transformation.asObject(dummy); System.out.println("DBObject:" + dbObject); Dummy read = transformation.asEntity(dbObject); System.out.println("DBObject:" + read); assertEquals("Eq", dummy, read); transformation.newVersion(read); assertFalse("!Eq", dummy.equals(read)); dbObject = transformation.asObject(read); System.out.println("DBObject(new Version):" + dbObject); } public void testLoop() { IMappingContext mappingContext = new MappingContext(); EntityVisitor<LoopDummy> entityVisitor = new EntityVisitor<LoopDummy>(); ITransformation<LoopDummy, DBObject> transformation = entityVisitor.transformation(mappingContext, LoopDummy.class); assertNotNull(transformation); LoopDummy dummy = newLoopDummy(); DBObject dbObject = transformation.asObject(dummy); System.out.println("DBObject:" + dbObject); LoopDummy read = transformation.asEntity(dbObject); System.out.println("DBObject:" + read); assertEquals("Eq", dummy, read); } public void testFlipFlop() { IMappingContext mappingContext = new MappingContext(); EntityVisitor<FlipFlopDummy> entityVisitor = new EntityVisitor<FlipFlopDummy>(); ITransformation<FlipFlopDummy, DBObject> transformation = entityVisitor.transformation(mappingContext, FlipFlopDummy.class); assertNotNull(transformation); FlipFlopDummy dummy = newFlipFlop(); DBObject dbObject = transformation.asObject(dummy); System.out.println("DBObject:" + dbObject); FlipFlopDummy read = transformation.asEntity(dbObject); System.out.println("DBObject:" + read); assertEquals("Eq", dummy, read); } public void testBadLoop() { IMappingContext mappingContext = new MappingContext(); EntityVisitor<BadLoopDummy> entityVisitor = new EntityVisitor<BadLoopDummy>(); ITransformation<BadLoopDummy, DBObject> transformation = entityVisitor.transformation(mappingContext, BadLoopDummy.class); assertNotNull(transformation); BadLoopDummy dummy = newBadLoop(); MappingException ex=null; try { DBObject dbObject = transformation.asObject(dummy); } catch (MappingException mx) { ex=mx; } assertNotNull("Exception",ex); } private Dummy newDummy() { Dummy dummy = new Dummy(); HashSet<String> tags = Sets.newLinkedHashSet(); tags.add("Bla"); tags.add("Blue"); dummy.setTags(tags); Foo<Integer> foo = new Foo<Integer>(); foo.setName("fooName"); foo.setValue(12); dummy.setFoo(foo); dummy.setMayBeVersion("12121"); dummy.setId(Reference.getInstance(Dummy.class, new ObjectId())); return dummy; } private LoopDummy newLoopDummy() { LoopDummy result=new LoopDummy(); Loop loop = new Loop(); loop.setName("Loop"); loop.setLoop(new Loop()); result.setStart(loop); return result; } private FlipFlopDummy newFlipFlop() { FlipFlopDummy result=new FlipFlopDummy(); Flip flip=new Flip(); flip.setLevel(1); Flop flop=new Flop(); flop.setLevel(2); Flip flip2=new Flip(); flip2.setLevel(3); flop.setFlip(flip2); flip.setFlop(flop); result.setFlip(flip); return result; } private BadLoopDummy newBadLoop() { BadLoopDummy result = new BadLoopDummy(); BadLoopDummy.BadLoop loop = new BadLoopDummy.BadLoop(); BadLoopDummy.BadLoop loop2 = new BadLoopDummy.BadLoop(); loop2.setLoop(loop); loop.setLoop(loop2); result.setLoop(loop); return result; } }