package com.kennycason.kumo;
import com.kennycason.kumo.bg.CircleBackground;
import com.kennycason.kumo.font.scale.LinearFontScalar;
import com.kennycason.kumo.nlp.FrequencyAnalyzer;
import com.kennycason.kumo.nlp.normalize.BubbleTextNormalizer;
import com.kennycason.kumo.nlp.normalize.StringToHexNormalizer;
import com.kennycason.kumo.nlp.normalize.UpperCaseNormalizer;
import com.kennycason.kumo.nlp.normalize.UpsideDownNormalizer;
import org.apache.log4j.Logger;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import java.awt.*;
import java.io.IOException;
import java.net.URL;
import java.util.List;
/**
* Created by kenny on 6/29/14.
*/
@Category(IntegrationTest.class)
public class WordCloudNormalizersITest {
private static final Logger LOGGER = Logger.getLogger(WordCloudNormalizersITest.class);
@Test
public void upperCaseNormalizer() throws IOException {
final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(750);
frequencyAnalyzer.setMinWordLength(5);
frequencyAnalyzer.addNormalizer(new UpperCaseNormalizer());
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load(new URL("http://kennycason.com"));
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.RECTANGLE);
wordCloud.setPadding(0);
wordCloud.setBackground(new CircleBackground(300));
wordCloud.setFontScalar(new LinearFontScalar(10, 40));
final long startTime = System.currentTimeMillis();
wordCloud.build(wordFrequencies);
LOGGER.info("Took " + (System.currentTimeMillis() - startTime) + "ms to build");
wordCloud.writeToFile("output/kennycason_com_wordcloud_circle_uppercase.png");
}
@Test
public void upsideDownNormalizer() throws IOException {
final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(750);
frequencyAnalyzer.setMinWordLength(5);
frequencyAnalyzer.addNormalizer(new UpsideDownNormalizer());
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load(new URL("http://kennycason.com"));
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.RECTANGLE);
wordCloud.setPadding(0);
wordCloud.setBackground(new CircleBackground(300));
wordCloud.setFontScalar(new LinearFontScalar(10, 40));
final long startTime = System.currentTimeMillis();
wordCloud.build(wordFrequencies);
LOGGER.info("Took " + (System.currentTimeMillis() - startTime) + "ms to build");
wordCloud.writeToFile("output/kennycason_com_wordcloud_circle_upsidedown.png");
}
@Test
public void hexStringNormalizer() throws IOException {
final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(750);
frequencyAnalyzer.setMinWordLength(5);
frequencyAnalyzer.addNormalizer(new StringToHexNormalizer());
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load(new URL("http://kennycason.com"));
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.RECTANGLE);
wordCloud.setPadding(0);
wordCloud.setBackground(new CircleBackground(300));
wordCloud.setFontScalar(new LinearFontScalar(10, 40));
final long startTime = System.currentTimeMillis();
wordCloud.build(wordFrequencies);
LOGGER.info("Took " + (System.currentTimeMillis() - startTime) + "ms to build");
wordCloud.writeToFile("output/kennycason_com_wordcloud_circle_hex.png");
}
@Test
public void noNormalizationOrFilters() throws IOException {
final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(750);
frequencyAnalyzer.setMinWordLength(5);
frequencyAnalyzer.clearFilters();
frequencyAnalyzer.clearNormalizers();
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load(new URL("http://kennycason.com"));
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.RECTANGLE);
wordCloud.setPadding(0);
wordCloud.setBackground(new CircleBackground(300));
wordCloud.setFontScalar(new LinearFontScalar(10, 40));
final long startTime = System.currentTimeMillis();
wordCloud.build(wordFrequencies);
LOGGER.info("Took " + (System.currentTimeMillis() - startTime) + "ms to build");
wordCloud.writeToFile("output/kennycason_com_wordcloud_circle_normalization_or_filter.png");
}
@Test
public void bubbleText() throws IOException {
final FrequencyAnalyzer frequencyAnalyzer = new FrequencyAnalyzer();
frequencyAnalyzer.setWordFrequenciesToReturn(750);
frequencyAnalyzer.addNormalizer(new BubbleTextNormalizer());
final List<WordFrequency> wordFrequencies = frequencyAnalyzer.load(new URL("http://kennycason.com"));
final Dimension dimension = new Dimension(600, 600);
final WordCloud wordCloud = new WordCloud(dimension, CollisionMode.RECTANGLE);
wordCloud.setPadding(0);
wordCloud.setFontScalar(new LinearFontScalar(10, 40));
final long startTime = System.currentTimeMillis();
wordCloud.build(wordFrequencies);
LOGGER.info("Took " + (System.currentTimeMillis() - startTime) + "ms to build");
wordCloud.writeToFile("output/bubbletext.png");
}
}