/* * Copyright 2008 Google Inc. * * 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.common.css; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; import com.google.common.collect.Sets; import junit.framework.TestCase; import java.util.List; /** * Unit tests for {@link JobDescriptionBuilder}. * */ public class JobDescriptionBuilderTest extends TestCase { private JobDescriptionBuilder builder; private JobDescription job; @Override protected void setUp() { builder = new JobDescriptionBuilder(); } @Override protected void tearDown() { builder = null; job = null; } public void testSimpleCreation() { job = builder.getJobDescription(); assertNotNull(job); assertSame(job, builder.getJobDescription()); } public void testSettingInputs1() { SourceCode sourceCode = new SourceCode("tempfile", "filecontents"); builder.addInput(sourceCode); job = builder.getJobDescription(); assertEquals(1, job.inputs.size()); assertSame(sourceCode, job.inputs.get(0)); } public void testSettingInputs2() { builder.addInput(new SourceCode("bla", "bla")).clearInputs(); SourceCode sourceCode = new SourceCode("tempfile", "filecontents"); builder.addInput(sourceCode); job = builder.getJobDescription(); assertEquals(1, job.inputs.size()); assertSame(sourceCode, job.inputs.get(0)); } public void testSettingInputs3() { SourceCode sourceCode = new SourceCode("tempfile", "filecontents"); builder.setInputs(ImmutableList.of(sourceCode)); job = builder.getJobDescription(); assertEquals(1, job.inputs.size()); assertSame(sourceCode, job.inputs.get(0)); } public void testSettingConditions1() { String conditionName = "cond"; builder.addTrueConditionName(conditionName); job = builder.getJobDescription(); assertEquals(1, job.trueConditionNames.size()); assertSame(conditionName, job.trueConditionNames.get(0)); } public void testSettingConditions2() { builder.addTrueConditionName("bla").clearTrueConditionNames(); String conditionName = "cond"; builder.addTrueConditionName(conditionName); job = builder.getJobDescription(); assertEquals(1, job.trueConditionNames.size()); assertSame(conditionName, job.trueConditionNames.get(0)); } public void testSettingConditions3() { String conditionName = "cond"; builder.setTrueConditionNames(ImmutableList.of(conditionName)); job = builder.getJobDescription(); assertEquals(1, job.trueConditionNames.size()); assertSame(conditionName, job.trueConditionNames.get(0)); } public void testSetCheckUnrecognizedProperties1() { builder.setAllowUnrecognizedProperties(false); job = builder.getJobDescription(); assertFalse(job.allowUnrecognizedProperties); } public void testSetCheckUnrecognizedProperties2() { builder.setAllowUnrecognizedProperties(true); job = builder.getJobDescription(); assertTrue(job.allowUnrecognizedProperties); } public void testSetCheckUnrecognizedProperties3() { builder.allowUnrecognizedProperties(); job = builder.getJobDescription(); assertTrue(job.allowUnrecognizedProperties); } public void testSetAllowUnrecognizedProperties() { List<String> properties = Lists.newArrayList("a", "b"); builder.setAllowedUnrecognizedProperties(properties); job = builder.getJobDescription(); assertEquals(Sets.newHashSet(properties), job.allowedUnrecognizedProperties); } public void testSetCopyrightNotice1() { builder.setCopyrightNotice(null); job = builder.getJobDescription(); assertNull(job.copyrightNotice); } public void testSetCopyrightNotice2() { String copyrightNotice = "/* Copyright Google Inc. */"; builder.setCopyrightNotice(copyrightNotice); job = builder.getJobDescription(); assertEquals(copyrightNotice, job.copyrightNotice); } public void testCopyJobDescription() { JobDescription otherJob = new JobDescriptionBuilder(). addInput(new SourceCode("tempFile", "contents")). setCopyrightNotice("/* Copyright Google Inc. */"). setOutputFormat(JobDescription.OutputFormat.PRETTY_PRINTED). setInputOrientation(JobDescription.InputOrientation.RTL). setOutputOrientation(JobDescription.OutputOrientation.RTL). addTrueConditionName("TEST_COND"). getJobDescription(); job = builder.copyFrom(otherJob).getJobDescription(); assertEquals(otherJob.inputs, job.inputs); assertEquals(otherJob.copyrightNotice, job.copyrightNotice); assertEquals(otherJob.outputFormat, job.outputFormat); assertEquals(otherJob.inputOrientation, job.inputOrientation); assertEquals(otherJob.outputOrientation, job.outputOrientation); assertEquals(otherJob.optimize, job.optimize); assertEquals(otherJob.trueConditionNames, job.trueConditionNames); } public void testCssRenamingPrefix() { String prefix = "PREFIX_"; builder.setCssRenamingPrefix(prefix); job = builder.getJobDescription(); assertEquals(prefix, job.cssRenamingPrefix); } public void testExcludedClasses() { List<String> exclude = Lists.newArrayList("foo", "bar"); builder.setExcludedClassesFromRenaming(exclude); job = builder.getJobDescription(); assertEquals(exclude, job.excludedClassesFromRenaming); } public void testAllowUndefinedConstants() { builder.setAllowUndefinedConstants(true); job = builder.getJobDescription(); assertTrue(job.allowUndefinedConstants); builder = job.toBuilder(); job = builder.getJobDescription(); assertTrue(job.allowUndefinedConstants); } }