blob: 8f732113f2ed1fb03360b4b9bd93d391e7ba18ed [file] [log] [blame]
// Copyright 2013 Google Inc. All Rights Reserved.
//
// 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 com.google.enterprise.adaptor.prebuilt;
import static org.junit.Assert.assertEquals;
import com.google.enterprise.adaptor.DocumentTransform;
import com.google.enterprise.adaptor.Metadata;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/** Unit tests for {@link PrebuiltTransfors}. */
public class PrebuiltTransformsTest {
@Rule
public ExpectedException thrown = ExpectedException.none();
@Test
public void testCopy() {
Map<String, String> config = new HashMap<String, String>();
config.put("1.from", "colour");
config.put("1.to", "color");
config.put("2.from", "author");
config.put("2.to", "contributors");
config.put("3.from", "color");
config.put("3.to", "favorite");
config.put("4.from", "missing");
config.put("4.to", "favorite");
config.put("trash.from", "colour");
config.put("trash.to", "not used");
config.put("5.from", "colour");
config.put("6.to", "colour");
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.copyMetadata(config);
final Metadata metadataGolden;
{
Metadata golden = new Metadata();
golden.add("colour", "black");
golden.add("color", "black");
golden.add("favorite", "black");
golden.add("author", "Fred");
golden.add("contributors", "Mary");
golden.add("contributors", "George");
golden.add("contributors", "Fred");
metadataGolden = golden.unmodifiableView();
}
Metadata metadata = new Metadata();
metadata.add("colour", "black");
metadata.add("author", "Fred");
metadata.add("contributors", "Mary");
metadata.add("contributors", "George");
transform.transform(metadata, new HashMap<String, String>());
assertEquals(metadataGolden, metadata);
}
@Test
public void testCopyToString() {
Map<String, String> config = new HashMap<String, String>();
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.copyMetadata(config);
assertEquals("CopyTransform(copies=[],overwrite=false,move=false)",
transform.toString());
}
@Test
public void testMove() {
Map<String, String> config = new HashMap<String, String>();
config.put("overwrite", "true");
config.put("1.from", "colour");
config.put("1.to", "color");
config.put("2.from", "author");
config.put("2.to", "contributors");
config.put("3.from", "color");
config.put("3.to", "favorite");
config.put("4.from", "missing");
config.put("4.to", "favorite");
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.moveMetadata(config);
final Metadata metadataGolden;
{
Metadata golden = new Metadata();
golden.add("favorite", "black");
golden.add("contributors", "Fred");
metadataGolden = golden.unmodifiableView();
}
Metadata metadata = new Metadata();
metadata.add("colour", "black");
metadata.add("author", "Fred");
metadata.add("contributors", "Mary");
metadata.add("contributors", "George");
transform.transform(metadata, new HashMap<String, String>());
assertEquals(metadataGolden, metadata);
}
@Test
public void testMoveToString() {
Map<String, String> config = new HashMap<String, String>();
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.moveMetadata(config);
assertEquals("CopyTransform(copies=[],overwrite=false,move=true)",
transform.toString());
}
@Test
public void testDelete() {
Map<String, String> config = new HashMap<String, String>();
config.put("key1", "missing");
config.put("key3", "author");
config.put("keyy", "contributors");
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.deleteMetadata(config);
final Metadata metadataGolden;
{
Metadata golden = new Metadata();
golden.add("colour", "black");
golden.add("contributors", "Mary");
golden.add("contributors", "George");
metadataGolden = golden.unmodifiableView();
}
Metadata metadata = new Metadata();
metadata.add("colour", "black");
metadata.add("author", "Fred");
metadata.add("contributors", "Mary");
metadata.add("contributors", "George");
transform.transform(metadata, new HashMap<String, String>());
assertEquals(metadataGolden, metadata);
}
@Test
public void testDeleteToString() {
Map<String, String> config = new HashMap<String, String>();
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.deleteMetadata(config);
assertEquals("DeleteTransform(keys=[])", transform.toString());
}
@Test
public void testReplacePattern() {
Map<String, String> config = new HashMap<String, String>();
config.put("key1", "colour");
config.put("key2", "missing");
config.put("key4", "contributors");
config.put("pattern", "[aeiou]");
config.put("replacement", "$0$0");
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.replaceMetadata(config);
final Metadata metadataGolden;
{
Metadata golden = new Metadata();
golden.add("colour", "blaack");
golden.add("author", "Fred");
golden.add("contributors", "Maary");
golden.add("contributors", "Geeoorgee");
metadataGolden = golden.unmodifiableView();
}
Metadata metadata = new Metadata();
metadata.add("colour", "black");
metadata.add("author", "Fred");
metadata.add("contributors", "Mary");
metadata.add("contributors", "George");
transform.transform(metadata, new HashMap<String, String>());
assertEquals(metadataGolden, metadata);
}
@Test
public void testReplaceString() {
Map<String, String> config = new HashMap<String, String>();
config.put("overwrite", "false");
config.put("key1", "colour");
config.put("key2", "missing");
config.put("key4", "contributors");
config.put("string", "[test]");
config.put("replacement", "$0");
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.replaceMetadata(config);
final Metadata metadataGolden;
{
Metadata golden = new Metadata();
golden.add("colour", "black [test]");
golden.add("colour", "black $0");
golden.add("author", "Fred [test]");
golden.add("contributors", "Ma[test]ry[test]");
golden.add("contributors", "Ma$0ry$0");
golden.add("contributors", "George");
metadataGolden = golden.unmodifiableView();
}
Metadata metadata = new Metadata();
metadata.add("colour", "black [test]");
metadata.add("author", "Fred [test]");
metadata.add("contributors", "Ma[test]ry[test]");
metadata.add("contributors", "George");
transform.transform(metadata, new HashMap<String, String>());
assertEquals(metadataGolden, metadata);
}
@Test
public void testReplaceToString() {
Map<String, String> config = new HashMap<String, String>();
config.put("string", "tofind");
config.put("replacement", "replace$0");
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.replaceMetadata(config);
assertEquals("ReplaceTransform(keys=[],toMatch=\\Qtofind\\E,"
+ "replacement=replace\\$0,overwrite=true)", transform.toString());
}
@Test
public void testReplaceMissingStringAndPattern() {
Map<String, String> config = new HashMap<String, String>();
config.put("replacement", "replace$0");
config = Collections.unmodifiableMap(config);
thrown.expect(IllegalArgumentException.class);
DocumentTransform transform = PrebuiltTransforms.replaceMetadata(config);
}
@Test
public void testReplaceBothStringAndPattern() {
Map<String, String> config = new HashMap<String, String>();
config.put("string", "tofind");
config.put("pattern", "tofind");
config.put("replacement", "replace$0");
config = Collections.unmodifiableMap(config);
thrown.expect(IllegalArgumentException.class);
DocumentTransform transform = PrebuiltTransforms.replaceMetadata(config);
}
@Test
public void testReplaceMissingReplacement() {
Map<String, String> config = new HashMap<String, String>();
config.put("string", "tofind");
config = Collections.unmodifiableMap(config);
thrown.expect(IllegalArgumentException.class);
DocumentTransform transform = PrebuiltTransforms.replaceMetadata(config);
}
@Test
public void testDegenerateMove() {
Map<String, String> config = new HashMap<String, String>();
config.put("1.from", "color");
config.put("1.to", "color");
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.moveMetadata(config);
final Metadata metadataGolden;
{
Metadata golden = new Metadata();
golden.add("color", "black");
metadataGolden = golden.unmodifiableView();
}
Metadata metadata = new Metadata();
metadata.add("color", "black");
transform.transform(metadata, new HashMap<String, String>());
assertEquals(metadataGolden, metadata);
}
@Test
public void testDegenerateCopy() {
Map<String, String> config = new HashMap<String, String>();
config.put("1.from", "color");
config.put("1.to", "color");
config = Collections.unmodifiableMap(config);
DocumentTransform transform = PrebuiltTransforms.copyMetadata(config);
final Metadata metadataGolden;
{
Metadata golden = new Metadata();
golden.add("color", "black");
metadataGolden = golden.unmodifiableView();
}
Metadata metadata = new Metadata();
metadata.add("color", "black");
transform.transform(metadata, new HashMap<String, String>());
assertEquals(metadataGolden, metadata);
}
}