package ca.concordia.cssanalyser.cssmodel.media;
import java.util.List;
import org.junit.BeforeClass;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
import ca.concordia.cssanalyser.cssmodel.StyleSheet;
import ca.concordia.cssanalyser.cssmodel.selectors.Selector;
import ca.concordia.cssanalyser.fixturesutil.FixturesUtil;
@RunWith(Suite.class)
@SuiteClasses({
MediaFeatureExpressionTest.class,
MediaQueryTest.class,
MediaQueryListTest.class
})
public class MediaTestSuite {
static MediaQueryList mql_1mq_only_feature,
mql_1mq_type_feature,
mql_1mq_same_type_diff_feature,
mql_1mq_different_type_same_feature,
mql_1mq_only_type,
mql_2mq,
mql_2mq_same_query_diff_order,
mql_2mq_with_prefix,
mql_3mq,
mql_1mq_multiple_features,
mql_1mq_multi_feature_diff_query,
mql_1mq_multi_feature_diff_order;
static MediaQuery
mq_only_query,
mq_type_feature,
mq_same_type_diff_feature,
mq_diff_type_same_feature,
mq_only_type,
mq_same_media_query,
mq_mutiple_features,
mq_multiple_features_different,
mq_mutiple_features_diff_order,
mq_with_prefix,
mq_with_diff_prefix;
static MediaFeatureExpression
mfex,
mfex_same_feature_diff_expr,
mfex_diff_feature_same_expr,
mfex_diff_feature_diff_expr;
@BeforeClass
public static void setUpOnce() {
mql_1mq_only_feature = getMediaQueryListFromString("@media (min-width: 480px)");
mql_1mq_type_feature = getMediaQueryListFromString("@media screen and (min-width: 480px)");
mql_1mq_same_type_diff_feature = getMediaQueryListFromString("@media screen and (min-width: 1024px)");
mql_1mq_different_type_same_feature = getMediaQueryListFromString("@media print and (min-width: 480px)");
mql_1mq_only_type = getMediaQueryListFromString("@media print");
mql_2mq = getMediaQueryListFromString("@media (min-width: 700px), handheld and (orientation: landscape)");
mql_2mq_same_query_diff_order = getMediaQueryListFromString("@media handheld and (orientation: landscape), (min-width: 700px)");
mql_2mq_with_prefix = getMediaQueryListFromString("@media not screen and (color), screen and (color)");
mql_3mq = getMediaQueryListFromString("@media screen and (min-width: 480px), not screen and (color), print and (color)");
mql_1mq_multiple_features = getMediaQueryListFromString("@media screen and (min-width: 480px) and (color) and (orientation: landscape)");
mql_1mq_multi_feature_diff_query = getMediaQueryListFromString("@media screen and (max-width: 480px) and (color) and (orientation: portrait)");
mql_1mq_multi_feature_diff_order = getMediaQueryListFromString("@media screen and (color) and (max-width: 480px) and (orientation: portrait)");
mq_only_query = getMediaQuery(mql_1mq_only_feature, 0);
mq_type_feature = getMediaQuery(mql_1mq_type_feature, 0);
mq_same_type_diff_feature = getMediaQuery(mql_1mq_same_type_diff_feature, 0);
mq_diff_type_same_feature = getMediaQuery(mql_1mq_different_type_same_feature, 0);
mq_only_type = getMediaQuery(mql_1mq_only_type, 0);
mq_same_media_query = getMediaQuery(mql_3mq, 0);
mq_mutiple_features = getMediaQuery(mql_1mq_multiple_features, 0);
mq_multiple_features_different = getMediaQuery(mql_1mq_multi_feature_diff_query, 0);
mq_mutiple_features_diff_order = getMediaQuery(mql_1mq_multi_feature_diff_order, 0);
mq_with_prefix = getMediaQuery(mql_2mq_with_prefix, 0);
mq_with_diff_prefix = getMediaQuery(mql_2mq_with_prefix, 1);
mfex = getMediaFeatureExpression(mq_only_query, 0);
mfex_same_feature_diff_expr = getMediaFeatureExpression(mq_same_type_diff_feature, 0);
mfex_diff_feature_same_expr = getMediaFeatureExpression(mq_multiple_features_different, 0);
mfex_diff_feature_diff_expr = getMediaFeatureExpression(mq_mutiple_features_diff_order, 0);
}
private static MediaQueryList getMediaQueryListFromString(String mediQueryString) {
StyleSheet styleSheetFromString = FixturesUtil.getStyleSheetFromString(mediQueryString + "{ .dummy {} }");
List<Selector> selectorsList = FixturesUtil.getSelectorsList(styleSheetFromString);
return selectorsList.get(0).getMediaQueryLists().iterator().next();
}
public static MediaQuery getMediaQuery(MediaQueryList mediaQueryList, int index) {
int i = 0;
for (MediaQuery mq : mediaQueryList) {
if (i++ == index)
return mq;
}
return null;
}
public static MediaFeatureExpression getMediaFeatureExpression(MediaQuery mediaQuery, int index) {
int i = 0;
for (MediaFeatureExpression mfex : mediaQuery.getMediaFeatureExpressions()) {
if (i++ == index)
return mfex;
}
return null;
}
}