// Path: src/com/nvinayshetty/DTOnator/DtoCreationOptions/FieldType.java
// public enum FieldType {
//     GSON, POJO,GSON_EXPOSE,JACKSON,CUSTOM,AUTO_VALUE
// }
// 
// Path: src/com/nvinayshetty/DTOnator/FieldCreator/FieldCreationFactory.java
// public class FieldCreationFactory {
//     public static FieldCreationStrategy getFieldCreatorFor(FieldType fieldType,String cutomFiledPattern) {
//         switch (fieldType) {
//             case AUTO_VALUE:
//                 return new AutoValueFieldCreator();
//             case GSON:
//                 return new GsonFieldCreator();
//             case POJO:
//                 return new SimpleFieldCreator();
//             case GSON_EXPOSE:
//                 return new ExposedGsonFieldCreator();
//             case JACKSON:
//                 return new JacksonFieldCreator();
//             case CUSTOM:
//                 return new CustomFieldCreator(cutomFiledPattern);
// 
// 
//         }
//         return null;
//     }
// }
// 
// Path: src/com/nvinayshetty/DTOnator/FieldCreator/FieldCreationStrategy.java
// public interface FieldCreationStrategy {
//     String getFieldFor(LanguageType languageType, FieldRepresentor type, AccessModifier accessModifier, String key, FieldNameParser parser, NameConflictResolver nameConflictResolver);
// 
//     String getImportDirective();
// 
// }
// 
// Path: src/com/nvinayshetty/DTOnator/FieldCreator/GsonFieldCreator.java
// public class GsonFieldCreator implements FieldCreationStrategy {
// 
//     @Override
//     public String getFieldFor(LanguageType languageType, FieldRepresentor type, AccessModifier modifier, String key, FieldNameParser parser, NameConflictResolver nameConflictResolver) {
//         return type.gsonFieldRepresentationTemplate(languageType, modifier, key, parser, nameConflictResolver);
//     }
// 
//     @Override
//     public String getImportDirective() {
//         return "com.google.gson.annotations.SerializedName";
//     }
// 
// }
// 
// Path: src/com/nvinayshetty/DTOnator/FieldCreator/SimpleFieldCreator.java
// public class SimpleFieldCreator implements FieldCreationStrategy {
//     @Override
//     public String getFieldFor(LanguageType languageType, FieldRepresentor fieldRepresentor, AccessModifier accessModifier, String key, FieldNameParser parser, NameConflictResolver nameConflictResolver) {
//         return fieldRepresentor.fieldCreationTemplate(languageType,accessModifier, key, parser, nameConflictResolver, new KeywordClassifier());
//     }
// 
//     @Override
//     public String getImportDirective() {
//         return "";
//     }
// 
// 
// }


import com.nvinayshetty.DTOnator.DtoCreationOptions.FieldType;
import com.nvinayshetty.DTOnator.FieldCreator.FieldCreationFactory;
import com.nvinayshetty.DTOnator.FieldCreator.FieldCreationStrategy;
import com.nvinayshetty.DTOnator.FieldCreator.GsonFieldCreator;
import com.nvinayshetty.DTOnator.FieldCreator.SimpleFieldCreator;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
/*
 * Copyright (C) 2015 Vinaya Prasad N
 *
 *         This program is free software: you can redistribute it and/or modify
 *         it under the terms of the GNU General Public License as published by
 *         the Free Software Foundation, either version 3 of the License, or
 *         (at your option) any later version.
 *
 *         This program is distributed in the hope that it will be useful,
 *         but WITHOUT ANY WARRANTY; without even the implied warranty of
 *         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *         GNU General Public License for more details.
 *
 *         You should have received a copy of the GNU General Public License
 *         along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package test.com.nvinayshetty.DTOnator.FieldCreator;




/**
 * Created by vinay on 16/8/15.
 */
public class FieldCreationFactoryShould {
    @Test
    public void shouldCretaGsonFieldWhenUserInputIsGson(){
// Path: src/com/nvinayshetty/DTOnator/DtoCreationOptions/FieldType.java
// public enum FieldType {
//     GSON, POJO,GSON_EXPOSE,JACKSON,CUSTOM,AUTO_VALUE
// }
// 
// Path: src/com/nvinayshetty/DTOnator/FieldCreator/FieldCreationFactory.java
// public class FieldCreationFactory {
//     public static FieldCreationStrategy getFieldCreatorFor(FieldType fieldType,String cutomFiledPattern) {
//         switch (fieldType) {
//             case AUTO_VALUE:
//                 return new AutoValueFieldCreator();
//             case GSON:
//                 return new GsonFieldCreator();
//             case POJO:
//                 return new SimpleFieldCreator();
//             case GSON_EXPOSE:
//                 return new ExposedGsonFieldCreator();
//             case JACKSON:
//                 return new JacksonFieldCreator();
//             case CUSTOM:
//                 return new CustomFieldCreator(cutomFiledPattern);
// 
// 
//         }
//         return null;
//     }
// }
// 
// Path: src/com/nvinayshetty/DTOnator/FieldCreator/FieldCreationStrategy.java
// public interface FieldCreationStrategy {
//     String getFieldFor(LanguageType languageType, FieldRepresentor type, AccessModifier accessModifier, String key, FieldNameParser parser, NameConflictResolver nameConflictResolver);
// 
//     String getImportDirective();
// 
// }
// 
// Path: src/com/nvinayshetty/DTOnator/FieldCreator/GsonFieldCreator.java
// public class GsonFieldCreator implements FieldCreationStrategy {
// 
//     @Override
//     public String getFieldFor(LanguageType languageType, FieldRepresentor type, AccessModifier modifier, String key, FieldNameParser parser, NameConflictResolver nameConflictResolver) {
//         return type.gsonFieldRepresentationTemplate(languageType, modifier, key, parser, nameConflictResolver);
//     }
// 
//     @Override
//     public String getImportDirective() {
//         return "com.google.gson.annotations.SerializedName";
//     }
// 
// }
// 
// Path: src/com/nvinayshetty/DTOnator/FieldCreator/SimpleFieldCreator.java
// public class SimpleFieldCreator implements FieldCreationStrategy {
//     @Override
//     public String getFieldFor(LanguageType languageType, FieldRepresentor fieldRepresentor, AccessModifier accessModifier, String key, FieldNameParser parser, NameConflictResolver nameConflictResolver) {
//         return fieldRepresentor.fieldCreationTemplate(languageType,accessModifier, key, parser, nameConflictResolver, new KeywordClassifier());
//     }
// 
//     @Override
//     public String getImportDirective() {
//         return "";
//     }
// 
// 
// }


// Path: src/test/com/nvinayshetty/DTOnator/FieldCreator/FieldCreationFactoryShould.java
import com.nvinayshetty.DTOnator.DtoCreationOptions.FieldType;
import com.nvinayshetty.DTOnator.FieldCreator.FieldCreationFactory;
import com.nvinayshetty.DTOnator.FieldCreator.FieldCreationStrategy;
import com.nvinayshetty.DTOnator.FieldCreator.GsonFieldCreator;
import com.nvinayshetty.DTOnator.FieldCreator.SimpleFieldCreator;
import org.junit.Test;
import static org.junit.Assert.assertTrue;

/*
 * Copyright (C) 2015 Vinaya Prasad N
 *
 *         This program is free software: you can redistribute it and/or modify
 *         it under the terms of the GNU General Public License as published by
 *         the Free Software Foundation, either version 3 of the License, or
 *         (at your option) any later version.
 *
 *         This program is distributed in the hope that it will be useful,
 *         but WITHOUT ANY WARRANTY; without even the implied warranty of
 *         MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *         GNU General Public License for more details.
 *
 *         You should have received a copy of the GNU General Public License
 *         along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package test.com.nvinayshetty.DTOnator.FieldCreator;




/**
 * Created by vinay on 16/8/15.
 */
public class FieldCreationFactoryShould {
    @Test
    public void shouldCretaGsonFieldWhenUserInputIsGson(){
        FieldCreationStrategy fieldCreationStrategy= FieldCreationFactory.getFieldCreatorFor(FieldType.GSON,"");