// Path: src/main/java/com/github/rschmitt/dynamicobject/DynamicObject.java
// static <T> T deserialize(String edn, Class<T> type) {
//     return EdnSerialization.deserialize(edn, type);
// }
// 
// Path: src/main/java/com/github/rschmitt/dynamicobject/DynamicObject.java
// static String serialize(Object o) {
//     return EdnSerialization.serialize(o);
// }


import clojure.lang.EdnReader;
import clojure.lang.PersistentHashMap;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static com.github.rschmitt.dynamicobject.DynamicObject.deserialize;
import static com.github.rschmitt.dynamicobject.DynamicObject.serialize;
import static java.lang.String.format;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
package com.github.rschmitt.dynamicobject;



@SuppressWarnings("unchecked")
public class MapTest {
    static final String SimpleEdn = "{:str \"expected value\", :i 4, :d 3.14}";
    static final String NestedEdn = format("{:version 1, :simple %s}", SimpleEdn);
    static final String TaggedEdn = format("#eo%s", NestedEdn);

    @BeforeEach
    public void setup() {
        DynamicObject.registerTag(EmptyObject.class, "eo");
    }

    @AfterEach
    public void teardown() {
        DynamicObject.deregisterTag(EmptyObject.class);
    }

    @Test
    public void getMapReturnsBackingMap() {
// Path: src/main/java/com/github/rschmitt/dynamicobject/DynamicObject.java
// static <T> T deserialize(String edn, Class<T> type) {
//     return EdnSerialization.deserialize(edn, type);
// }
// 
// Path: src/main/java/com/github/rschmitt/dynamicobject/DynamicObject.java
// static String serialize(Object o) {
//     return EdnSerialization.serialize(o);
// }


// Path: src/test/java/com/github/rschmitt/dynamicobject/MapTest.java
import clojure.lang.EdnReader;
import clojure.lang.PersistentHashMap;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static com.github.rschmitt.dynamicobject.DynamicObject.deserialize;
import static com.github.rschmitt.dynamicobject.DynamicObject.serialize;
import static java.lang.String.format;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;

package com.github.rschmitt.dynamicobject;



@SuppressWarnings("unchecked")
public class MapTest {
    static final String SimpleEdn = "{:str \"expected value\", :i 4, :d 3.14}";
    static final String NestedEdn = format("{:version 1, :simple %s}", SimpleEdn);
    static final String TaggedEdn = format("#eo%s", NestedEdn);

    @BeforeEach
    public void setup() {
        DynamicObject.registerTag(EmptyObject.class, "eo");
    }

    @AfterEach
    public void teardown() {
        DynamicObject.deregisterTag(EmptyObject.class);
    }

    @Test
    public void getMapReturnsBackingMap() {
        EmptyObject object = deserialize(TaggedEdn, EmptyObject.class);