| /* |
| * Copyright 2014 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.gwt.resources.gss; |
| |
| import static org.mockito.Matchers.any; |
| import static org.mockito.Mockito.mock; |
| import static org.mockito.Mockito.never; |
| import static org.mockito.Mockito.verify; |
| |
| import com.google.gwt.thirdparty.common.css.SourceCode; |
| import com.google.gwt.thirdparty.common.css.compiler.ast.CssTree; |
| import com.google.gwt.thirdparty.common.css.compiler.ast.ErrorManager; |
| import com.google.gwt.thirdparty.common.css.compiler.ast.GssError; |
| import com.google.gwt.thirdparty.common.css.compiler.ast.GssParser; |
| import com.google.gwt.thirdparty.common.css.compiler.ast.GssParserException; |
| import com.google.gwt.thirdparty.guava.common.base.Joiner; |
| |
| import junit.framework.TestCase; |
| |
| /** |
| * Base class for all test that want to build an ast based on css strings. |
| */ |
| public abstract class BaseGssTest extends TestCase { |
| /** |
| * Parse the css given in parameter and return the corresponding CssTree. |
| */ |
| protected CssTree parseAndBuildTree(String source) { |
| CssTree cssTree = parse(source); |
| |
| ErrorManager errorManager = mock(ErrorManager.class); |
| |
| runPassesOnNewTree(cssTree, errorManager); |
| |
| // we don't expect a failure here |
| verify(errorManager, never()).report(any(GssError.class)); |
| |
| return cssTree; |
| } |
| |
| /** |
| * Run the Passes needed to have a well formed ast needed for the test. |
| * <p/> |
| * This method should be overridden by concrete class in order to run visitor they need to get |
| * a expected ast to use in the test. |
| */ |
| protected void runPassesOnNewTree(CssTree cssTree, ErrorManager errorManager) { |
| } |
| |
| protected String lines(String... lines) { |
| return Joiner.on("\n").join(lines); |
| } |
| |
| private CssTree parse(String source) { |
| try { |
| return new GssParser(new SourceCode("test", source)).parse(); |
| } catch (GssParserException e) { |
| fail(e.getMessage()); |
| } |
| return null; |
| } |
| } |