content: /*
   * Copyright (c) 2010. All rights reserved.
   */
  package ro.isdc.wro.extensions.processor;
  
  import java.io.File;
  import java.io.IOException;
  import java.io.StringReader;
  import java.io.StringWriter;
  import java.net.URL;
  import java.util.concurrent.Callable;
  
  import org.junit.Test;
  
  import ro.isdc.wro.WroRuntimeException;
  import ro.isdc.wro.extensions.processor.css.SassCssProcessor;
  import ro.isdc.wro.model.resource.ResourceType;
  import ro.isdc.wro.model.resource.processor.ResourcePostProcessor;
  import ro.isdc.wro.util.WroTestUtils;
  
  
  /**
   * Test sass css processor.
   *
   * @author Alex Objelean
   * @created Created on Apr 21, 2010
   */
  public class TestSassCssProcessor {
    @Test
    public void testFromFolder()
      throws IOException {
      final URL url = getClass().getResource("sasscss");
      final ResourcePostProcessor processor = new SassCssProcessor();
  
      final File testFolder = new File(url.getFile(), "test");
      final File expectedFolder = new File(url.getFile(), "expected");
      WroTestUtils.compareFromDifferentFoldersByExtension(testFolder, expectedFolder, "css", processor);
    }
    
  
    @Test
    public void shouldBeThreadSafe() throws Exception {
      final SassCssProcessor processor = new SassCssProcessor() {
        @Override
        protected void onException(final WroRuntimeException e) {
          throw e;
        }
      };
      final Callable<Void> task = new Callable<Void>() {
        public Void call() {
          try {
            processor.process(new StringReader("#id {.class {color: red;}}"), new StringWriter());
          } catch (final Exception e) {
            throw new RuntimeException(e);
          }
          return null;
        }
      };
      WroTestUtils.runConcurrently(task);
    }
    
  
    @Test
    public void shouldSupportCorrectResourceTypes() {
      WroTestUtils.assertProcessorSupportResourceTypes(new SassCssProcessor(), ResourceType.CSS);
    }
  }
  