content: /**
   * Licensed to the Apache Software Foundation (ASF) under one
   * or more contributor license agreements.  See the NOTICE file
   * distributed with this work for additional information
   * regarding copyright ownership.  The ASF licenses this file
   * to you 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
   * <p>
   * http://www.apache.org/licenses/LICENSE-2.0
   * <p>
   * 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.apache.atlas.repository.impexp;
  
  import org.apache.atlas.exception.AtlasBaseException;
  import org.testng.annotations.Test;
  
  import static org.testng.Assert.assertEquals;
  import static org.testng.Assert.assertNull;
  import static org.testng.Assert.assertTrue;
  
  public class ImportTransformerTest {
      @Test
      public void createWithCorrectParameters() throws AtlasBaseException {
          String param1 = "@cl1";
          String param2 = "@cl2";
  
          ImportTransformer e = ImportTransformer.getTransformer(String.format("%s~%s~%s", "replace", param1, param2));
  
          assertTrue(e instanceof ImportTransformer.Replace);
          assertEquals(((ImportTransformer.Replace) e).getToFindStr(), param1);
          assertEquals(((ImportTransformer.Replace) e).getReplaceStr(), param2);
      }
  
      @Test
      public void createSeveralWithCorrectParameters() throws AtlasBaseException {
          String param1 = "@cl1";
          String param2 = "@cl2";
  
          ImportTransformer e1 = ImportTransformer.getTransformer(String.format("%s~%s~%s", "replace", param1, param2));
          ImportTransformer e2 = ImportTransformer.getTransformer(String.format("replace~tt1~tt2"));
  
          assertTrue(e1 instanceof ImportTransformer.Replace);
          assertEquals(((ImportTransformer.Replace) e1).getToFindStr(), param1);
          assertEquals(((ImportTransformer.Replace) e1).getReplaceStr(), param2);
  
          assertTrue(e2 instanceof ImportTransformer.Replace);
          assertEquals(((ImportTransformer.Replace) e2).getToFindStr(), "tt1");
          assertEquals(((ImportTransformer.Replace) e2).getReplaceStr(), "tt2");
      }
  
      @Test
      public void createWithDefaultParameters() throws AtlasBaseException {
          ImportTransformer e1 = ImportTransformer.getTransformer("replace~@cl1");
          ImportTransformer e2 = ImportTransformer.getTransformer("replace");
  
          assertTrue(e1 instanceof ImportTransformer.Replace);
          assertEquals(((ImportTransformer.Replace) e1).getToFindStr(), "@cl1");
          assertEquals(((ImportTransformer.Replace) e1).getReplaceStr(), "");
  
          assertTrue(e2 instanceof ImportTransformer.Replace);
          assertEquals(((ImportTransformer.Replace) e2).getToFindStr(), "");
          assertEquals(((ImportTransformer.Replace) e2).getReplaceStr(), "");
      }
  
      @Test
      public void applyLowercaseTransformer() throws AtlasBaseException {
          ImportTransformer e = ImportTransformer.getTransformer("lowercase");
  
          assertEquals(e.apply("@CL1"), "@cl1");
          assertEquals(e.apply("@cl1"), "@cl1");
          assertEquals(e.apply(""), ""); // empty string
          assertNull(e.apply(null)); // null value: no change
          assertEquals(e.apply(5), 5); // non-string value: no change
      }
  
      @Test
      public void applyUppercaseTransformer() throws AtlasBaseException {
          ImportTransformer e = ImportTransformer.getTransformer("uppercase");
  
          assertEquals(e.apply("@CL1"), "@CL1");
          assertEquals(e.apply("@cl1"), "@CL1");
          assertEquals(e.apply(""), ""); // empty string
          assertNull(e.apply(null)); // null value: no change
          assertEquals(e.apply(5), 5); // non-string value: no change
      }
  
      @Test
      public void applyReplaceTransformer1() throws AtlasBaseException {
          ImportTransformer e = ImportTransformer.getTransformer("replace~@cl1~@cl2");
  
          assertEquals(e.apply("@cl1"), "@cl2");
          assertEquals(e.apply("default@cl1"), "default@cl2");
          assertEquals(e.apply("@cl11"), "@cl21");
          assertEquals(e.apply("@cl2"), "@cl2");
          assertEquals(e.apply(""), ""); // empty string
          assertNull(e.apply(null)); // null value
          assertEquals(e.apply(5), 5); // non-string value: no change
      }
  
      @Test
      public void applyReplaceTransformer2() throws AtlasBaseException {
          ImportTransformer e = ImportTransformer.getTransformer("replace~@cl1");
  
          assertEquals(e.apply("@cl1"), "");
          assertEquals(e.apply("default@cl1"), "default");
          assertEquals(e.apply("@cl11"), "1");
          assertEquals(e.apply("@cl2"), "@cl2");
          assertEquals(e.apply(""), ""); // empty string
          assertNull(e.apply(null)); // null value
          assertEquals(e.apply(5), 5); // non-string value: no change
      }
  
      @Test
      public void applyReplaceTransformer3() throws AtlasBaseException {
          ImportTransformer e = ImportTransformer.getTransformer("replace");
  
          assertEquals(e.apply("@cl1"), "@cl1");
          assertEquals(e.apply("default@cl1"), "default@cl1");
          assertEquals(e.apply("@cl11"), "@cl11");
          assertEquals(e.apply("@cl2"), "@cl2");
          assertEquals(e.apply(""), ""); // empty string
          assertNull(e.apply(null)); // null value
          assertEquals(e.apply(5), 5); // non-string value: no change
      }
  }
  