remove unit tests for minify

This commit is contained in:
Evan Prodromou 2009-12-07 12:13:42 -05:00
parent 11dab47e2d
commit 0c955b7c88
79 changed files with 0 additions and 8441 deletions

View File

@ -1,44 +0,0 @@
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
require 'HTTP/ConditionalGet.php';
// emulate regularly updating document
$every = 20;
$lastModified = round(time()/$every)*$every - $every;
$cg = new HTTP_ConditionalGet(array(
'lastModifiedTime' => $lastModified
));
if ($cg->cacheIsValid) {
$cg->sendHeaders();
// we're done
exit();
}
// generate content
$title = 'Last-Modified is known : add Content-Length';
$explain = '
<p>Here, like <a href="./">the first example</a>, we know the Last-Modified time,
but we also want to set the Content-Length to increase cacheability and allow
HTTP persistent connections. Instead of sending headers immediately, we first
generate our content, then use <code>setContentLength(strlen($content))</code>
to add the header. Then finally call <code>sendHeaders()</code> and send the
content.</p>
<p><strong>Note:</strong> This is not required if your PHP config buffers all
output and your script doesn\'t do any incremental flushing of the output
buffer. PHP will generally set Content-Length for you if it can.</p>
<p>This script emulates a document that changes every ' .$every. ' seconds.
<br>This is version: ' . date('r', $lastModified) . '</p>
';
require '_include.php';
$content = get_content(array(
'title' => $title
,'explain' => $explain
));
$cg->setContentLength(strlen($content));
$cg->sendHeaders();
send_slowly($content);

View File

@ -1,40 +0,0 @@
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
require 'HTTP/ConditionalGet.php';
// generate content first (not ideal)
// emulate regularly updating document
$every = 20;
$lastModified = round(time()/$every)*$every - $every;
$title = 'Last-Modified is unknown : use hash of content for ETag';
$explain = '
<p>When Last-Modified is unknown, you can still use ETags, but you need a short
string that is unique for that content. In the worst case, you have to generate
all the content first, <em>then</em> instantiate HTTP_ConditionalGet, setting
the array key <code>contentHash</code> to the output of a hash function of the
content. Since we have the full content, we might as well also use
<code>setContentLength(strlen($content))</code> in the case where we need to
send it.</p>
<p>This script emulates a document that changes every ' .$every. ' seconds.
<br>This is version: ' . date('r', $lastModified) . '</p>
';
require '_include.php';
$content = get_content(array(
'title' => $title
,'explain' => $explain
));
$cg = new HTTP_ConditionalGet(array(
'contentHash' => substr(md5($content), 7)
));
if ($cg->cacheIsValid) {
$cg->sendHeaders();
// we're done
exit();
}
$cg->setContentLength(strlen($content));
$cg->sendHeaders();
send_slowly($content);

View File

@ -1,49 +0,0 @@
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
require 'HTTP/ConditionalGet.php';
// emulate regularly updating document
$every = 20;
$lastModified = round(time()/$every)*$every - $every;
require 'HTTP/Encoder.php';
list($enc,) = HTTP_Encoder::getAcceptedEncoding();
$cg = new HTTP_ConditionalGet(array(
'lastModifiedTime' => $lastModified
,'encoding' => $enc
));
$cg->sendHeaders();
if ($cg->cacheIsValid) {
// we're done
exit();
}
// output encoded content
$title = 'ConditionalGet + Encoder';
$explain = '
<p>Using ConditionalGet and Encoder is straightforward. First impliment the
ConditionalGet, then if the cache is not valid, encode and send the content</p>
<p>This script emulates a document that changes every ' .$every. ' seconds.
<br>This is version: ' . date('r', $lastModified) . '</p>
';
require '_include.php';
$content = get_content(array(
'title' => $title
,'explain' => $explain
));
$he = new HTTP_Encoder(array(
'content' => get_content(array(
'title' => $title
,'explain' => $explain
))
));
$he->encode();
// usually you would just $he->sendAll(), but here we want to emulate slow
// connection
$he->sendHeaders();
send_slowly($he->getContent());

View File

@ -1,27 +0,0 @@
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
require 'HTTP/ConditionalGet.php';
// far expires
$cg = new HTTP_ConditionalGet(array(
'maxAge' => 20
,'lastModifiedTime' => filemtime(__FILE__)
));
$cg->sendHeaders();
// generate, send content
$title = 'Last-Modified + Expires';
$explain = '
<p>Here we set a static "lastModifiedTime" and "maxAge" to 20. The browser
will consider this document fresh for 20 seconds, then revalidate its cache. After
the 304 response, the cache will be good for another 20 seconds. Unless you force
a reload, there will only be 304 responses for this page after the initial download.
';
require '_include.php';
echo get_content(array(
'title' => $title
,'explain' => $explain
));

View File

@ -1,64 +0,0 @@
<?php
function send_slowly($content)
{
$half = ceil(strlen($content) / 2);
$content = str_split($content, $half);
while ($chunk = array_shift($content)) {
sleep(1);
echo $chunk;
ob_get_level() && ob_flush();
flush();
}
}
function get_content($data)
{
ob_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>HTTP_ConditionalGet : <?php echo $data['title']; ?></title>
</head>
<body>
<h1>HTTP_ConditionalGet</h1>
<h2><?php echo $data['title']; ?></h2>
<?php echo $data['explain']; ?>
<ul>
<li><a href="./">Last-Modified is known : simple usage</a></li>
<li><a href="2.php">Last-Modified is known : add Content-Length</a></li>
<li><a href="3.php">Last-Modified is unknown : use hash of content for ETag</a></li>
<li><a href="4.php">ConditionalGet + Encoder</a></li>
<li><a href="5.php">Last-Modified + Expires</a></li>
</ul>
<h2>Notes</h2>
<h3>How to distinguish 200 and 304 responses</h3>
<p>For these pages all 200 responses are sent in chunks a second apart, so you
should notice that 304 responses are quicker. You can also use HTTP sniffers
like <a href="http://www.fiddlertool.com/">Fiddler (win)</a> and
<a href="http://livehttpheaders.mozdev.org/">LiveHTTPHeaders (Firefox add-on)</a>
to verify headers and content being sent.</p>
<h3>Browser notes</h3>
<dl>
<dt>Opera</dt>
<dd>Opera has a couple behaviors against the HTTP spec: Manual refreshes (F5)
prevents the ETag/If-Modified-Since headers from being sent; it only sends
them when following a link or bookmark. Also, Opera will not honor the
<code>must-revalidate</code> Cache-Control value unless <code>max-age</code>
is set. To get Opera to follow the spec, ConditionalGet will send Opera max-age=0
(if one is not already set).</dd>
<dt>Safari</dt>
<dd>ETag validation is unsupported, but Safari supports HTTP/1.0 validation via
If-Modified-Since headers as long as the cache is explicitly marked
"public" or "private" ("private" is default in ConditionalGet).</dd>
</dl>
</body>
</html>
<?php
$content = ob_get_contents();
ob_end_clean();
return $content;
}

View File

@ -1,36 +0,0 @@
<?php
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
require 'HTTP/ConditionalGet.php';
// emulate regularly updating document
$every = 20;
$lastModified = round(time()/$every)*$every - $every;
$cg = new HTTP_ConditionalGet(array(
'lastModifiedTime' => $lastModified
));
$cg->sendHeaders();
if ($cg->cacheIsValid) {
// we're done
exit();
}
$title = 'Last-Modified is known : simple usage';
$explain = '
<p>If your content has not changed since a certain timestamp, set this via the
the <code>lastModifiedTime</code> array key when instantiating HTTP_ConditionalGet.
You can immediately call the method <code>sendHeaders()</code> to set the
Last-Modified, ETag, and Cache-Control headers. The, if <code>cacheIsValid</code>
property is false, you echo the content.</p>
<p>This script emulates a document that changes every ' .$every. ' seconds.
<br>This is version: ' . date('r', $lastModified) . '</p>
';
require '_include.php';
echo send_slowly(get_content(array(
'title' => $title
,'explain' => $explain
)));

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 B

View File

@ -1,60 +0,0 @@
<?php
ini_set('display_errors', 'on');
set_include_path(get_include_path() . PATH_SEPARATOR . realpath(dirname(__FILE__) . '/../../min/lib'));
require 'HTTP/Encoder.php';
if (!isset($_GET['test'])) {
$type = 'text/html';
ob_start();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>HTTP_Encoder Test</title>
<style type="text/css">
@import "?test=2";
#img {background:url("?test=1");}
.green {background:#0f0;}
p span {padding:0 .5em;}
</style>
</head>
<body>
<h1>HTTP_Encoder test</h1>
<p><span class="green"> HTML </span></p>
<p><span id="css"> CSS </span></p>
<p><span id="js"> Javascript </span></p>
<p><span id="img"> image </span></p>
<script src="?test=3" type="text/javascript"></script>
</body>
</html>
<?php
$content = ob_get_contents();
ob_end_clean();
} elseif ($_GET['test'] == '1') {
$content = file_get_contents(dirname(__FILE__) . '/green.png');
$type = 'image/png';
} elseif ($_GET['test'] == '2') {
$content = '#css {background:#0f0;}';
$type = 'text/css';
} else {
$content = '
window.onload = function(){
document.getElementById("js").className = "green";
};
';
$type = 'application/x-javascript';
}
$he = new HTTP_Encoder(array(
'content' => $content
,'type' => $type
));
$he->encode();
$he->sendAll();
?>

View File

@ -1,50 +0,0 @@
<?php
require dirname(__FILE__) . '/../min/config.php';
set_include_path($min_libPath . PATH_SEPARATOR . get_include_path());
// set cache path and doc root if configured
$minifyCachePath = isset($min_cachePath)
? $min_cachePath
: '';
if ($min_documentRoot) {
$_SERVER['DOCUMENT_ROOT'] = $min_documentRoot;
}
// default log to FirePHP
require_once 'Minify/Logger.php';
if ($min_errorLogger && true !== $min_errorLogger) { // custom logger
Minify_Logger::setLogger($min_errorLogger);
} else {
require_once 'FirePHP.php';
Minify_Logger::setLogger(FirePHP::getInstance(true));
}
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', 1);
header('Content-Type: text/plain');
$thisDir = dirname(__FILE__);
/**
* pTest - PHP Unit Tester
* @param mixed $test Condition to test, evaluated as boolean
* @param string $message Descriptive message to output upon test
* @url http://www.sitepoint.com/blogs/2007/08/13/ptest-php-unit-tester-in-9-lines-of-code/
*/
function assertTrue($test, $message)
{
static $count;
if (!isset($count)) $count = array('pass'=>0, 'fail'=>0, 'total'=>0);
$mode = $test ? 'pass' : 'fail';
$outMode = $test ? 'PASS' : '!FAIL';
printf("%s: %s (%d of %d tests run so far have %sed)\n",
$outMode, $message, ++$count[$mode], ++$count['total'], $mode);
return (bool)$test;
}
ob_start();

View File

@ -1,9 +0,0 @@
/* block comments get removed */
/*! YUI Compressor style comments are preserved */
/* but all other comments are removed */
/* comments that have any surrounding whitespace are replaced by a single space. */
body{ background:#fff/*eef*/ url(/path/to/image.gif) repeat-y; }

View File

@ -1,3 +0,0 @@
/* YUI Compressor style comments are preserved */
body{background:#fff url(/path/to/image.gif) repeat-y}

View File

@ -1,66 +0,0 @@
/* hide from ie5/mac \*/ a{}
.foo {color:red}
/* necessary comment */
/* comment to attempt to confuse parser */
/* feed to ie5/mac \*//*/
@import "ie5mac.css";
/* necessary comment */
/* comment to attempt to confuse parser */
/*/ hide from nav4 */
.foo {display:block;}
/* necessary comment */
/* comment to attempt to confuse parser */
/*/ feed to nav *//*/
.foo {display:crazy;}
/* necessary comment */
/* hide props from various IE/win */
div {
width: 140px;
width/* */:/**/100px;
width: /**/100px;
}
html>/**/body {}
/* Tantek's box model hack */
div {
width:400px;
voice-family: "\"}\"";
voice-family:inherit;
width:300px;
}
/* don't minimize hex colors in filters */
div {
filter:chroma(color=#aabbcc);
filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000);
}
@media screen {
/* for IE 5.x-6, hidden from IE 5 Mac */ /*\*/
* html div#page {
height: 1%;
}
/**/ /* end hidden from IE 5 Mac */
}
foo { /* filters for IE */
_height : 20px;
*height : 15px;
}
/* http://tantek.com/CSS/Examples/midpass.html */
@media tty {
i{content:"\";/*" "*/}} @import 'midpassafter.css'; /*";}
}/* */
/* leave at least 1 space between these pseudo elements and "{" for IE6: http://www.crankygeek.com/ie6pebug/ */
p:first-letter {color:red;}
p:first-line {color:red;}

View File

@ -1,4 +0,0 @@
/*\*/a{}.foo{color:red}/**/ /*\*//*/@import "ie5mac.css";/**/ /*/*/.foo{display:block}/**/ /*/*//*/.foo{display:crazy}/**/ div{width:140px;width/**/:/**/100px;width:/**/100px}html>/**/body{}div{width:400px;voice-family:"\"}\"";voice-family:inherit;width:300px}div{filter:chroma(color=#aabbcc);filter:mask(color=#000000) shadow(color=#9BAD71, direction=135) chroma(color=#000000)}@media
screen{/*\*/* html
div#page{height:1%}/**/}foo{_height:20px;*height:15px}@media
tty{i{content:"\";/*" "*/}}@import 'midpassafter.css';/*"}}/* */ p:first-letter {color:red}p:first-line {color:red}

View File

@ -1,890 +0,0 @@
/*
* DEFINITION DES STYLES DE TEXTE
*/
/*-----------------------------------------------------------------------------------*/
h1 {
color: #339933;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
font-weight: bold;
text-decoration: none;
}
h2 {
color: #339933;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
font-weight: bold;
text-decoration: none;
}
h1,h2,h3,h4,h5 {
margin: 0px;
padding: 0px;
}
.txt_10_noir {
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_noir:link,.txt_10_noir:visited,.txt_10_noir:active {
color: black;
}
.txt_10_noir:hover {
color: red;
}
.txt_11_noir {
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_noir:link,.txt_11_noir:visited,.txt_11_noir:active {
color: black;
}
.txt_11_noir:hover {
color: red;
}
.txt_12_noir {
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_noir:link,.txt_12_noir:visited,.txt_12_noir:active {
color: black;
}
.txt_12_noir:hover {
color: red;
}
.txt_14_noir {
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_noir:link,.txt_14_noir:visited,.txt_14_noir:active {
color: black;
}
.txt_14_noir:hover {
color: red;
}
/*-----------------------------------------------------------------------------------*/
.txt_10_gris {
color: grey;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_gris:link,.txt_10_gris:visited,.txt_10_gris:active {
color: grey;
}
.txt_10_gris:hover {
color: red;
}
.txt_11_gris {
color: grey;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_gris:link,.txt_11_gris:visited,.txt_11_gris:active {
color: grey;
}
.txt_11_gris:hover {
color: red;
}
.txt_12_gris {
color: grey;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_gris:link,.txt_12_gris:visited,.txt_12_gris:active {
color: grey;
}
.txt_12_gris:hover {
color: red;
}
.txt_14_gris {
color: grey;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_gris:link,.txt_14_gris:visited,.txt_14_gris:active {
color: grey;
}
.txt_14_gris:hover {
color: red;
}
/*-----------------------------------------------------------------------------------*/
.txt_10_blanc {
color: #FFFFFF;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_blanc:link,.txt_10_blanc:visited,.txt_10_blanc:active {
color: #FFFFFF;
}
.txt_10_blanc:hover {
color: #FF8800; /*ORANGE*/
}
.txt_11_blanc {
color: #FFFFFF;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_blanc:link,.txt_11_blanc:visited,.txt_11_blanc:active {
color: #FFFFFF;
}
.txt_11_blanc:hover {
color: #FF8800;
}
.txt_12_blanc {
color: #FFFFFF;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_blanc:link,.txt_12_blanc:visited,.txt_12_blanc:active {
color: #FFFFFF;
}
.txt_12_blanc:hover {
color: #FFAA00;
}
.txt_14_blanc {
color: #FFFFFF;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_blanc:link,.txt_14_blanc:visited,.txt_14_blanc:active {
color: #FFFFFF;
}
.txt_14_blanc:hover {
color: #FF8800;
}
/*-----------------------------------------------------------------------------------*/
.txt_10_orange {
color: #FF8800;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_orange:link,.txt_10_orange:visited,.txt_10_orange:active {
color: #FF8800;
}
.txt_10_orange:hover {
color: darkblue
}
.txt_11_orange {
color: #FF8800;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_orange:link,.txt_11_orange:visited,.txt_11_orange:active {
color: #FF8800;
}
.txt_11_orange:hover {
color: darkblue;
}
.txt_12_orange {
color: #FF8800;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_orange:link,.txt_12_orange:visited,.txt_12_orange:active {
color: #FF8800;
}
.txt_12_orange:hover {
color: darkblue;
}
.txt_14_orange {
color: #FF8800;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_orange:link,.txt_14_orange:visited,.txt_14_orange:active {
color: #FF8800;
}
.txt_14_orange:hover {
color: darkblue;
}
/*-----------------------------------------------------------------------------------*/
.txt_10_rouge {
color: red;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_rouge:link,.txt_10_rouge:visited,.txt_10_rouge:active {
color: red;
}
.txt_10_rouge:hover {
color: darkblue;
}
.txt_11_rouge {
color: red;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_rouge:link,.txt_11_rouge:visited,.txt_11_rouge:active {
color: red;
}
.txt_11_rouge:hover {
color: darkblue;
}
.txt_12_rouge {
color: red;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_rouge:link,.txt_12_rouge:visited,.txt_12_rouge:active {
color: red;
}
.txt_12_rouge:hover {
color: darkblue;
}
.txt_14_rouge {
color: red;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_rouge:link,.txt_14_rouge:visited,.txt_14_rouge:active {
color: red;
}
.txt_14_rouge:hover {
color: darkblue;
}
/*-----------------------------------------------------------------------------------*/
.txt_10_bleu {
color: blue;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_bleu:link,.txt_10_bleu:visited,.txt_10_bleu:active {
color: blue;
}
.txt_10_bleu:hover {
color: red;
}
.txt_11_bleu {
color: blue;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_bleu:link,.txt_11_bleu:visited,.txt_11_bleu:active {
color: blue;
}
.txt_11_bleu:hover {
color: red;
}
.txt_12_bleu {
color: blue;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_bleu:link,.txt_12_bleu:visited,.txt_12_bleu:active {
color: blue;
}
.txt_12_bleu:hover {
color: red;
}
.txt_14_bleu {
color: blue;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_bleu:link,.txt_14_bleu:visited,.txt_14_bleu:active {
color: blue;
}
.txt_14_bleu:hover {
color: red;
}
/*-----------------------------------------------------------------------------------*/
.txt_10_bleu_f {
color: darkblue;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_bleu_f:link,.txt_10_bleu_f:visited,.txt_10_bleu_f:active {
color: darkblue;
}
.txt_10_bleu_f:hover {
color: red;
}
.txt_11_bleu_f {
color: darkblue;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_bleu_f:link,.txt_11_bleu_f:visited,.txt_11_bleu_f:active {
color: darkblue;
}
.txt_11_bleu_f:hover {
color: red;
}
.txt_12_bleu_f {
color: darkblue;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_bleu_f:link,.txt_12_bleu_f:visited,.txt_12_bleu_f:active {
color: darkblue;
}
.txt_12_bleu_f:hover {
color: red;
}
.txt_14_bleu_f {
color: darkblue;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_bleu_f:link,.txt_14_bleu_f:visited,.txt_14_bleu_f:active {
color: darkblue;
}
.txt_14_bleu_f:hover {
color: red;
}
/*-----------------------------------------------------------------------------------*/
.txt_10_vert_f {
color: darkgreen;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_vert_f:link,.txt_10_vert_f:visited,.txt_10_vert_f:active {
color: darkgreen;
}
.txt_10_vert_f:hover {
color: red;
}
.txt_11_vert_f {
color: darkgreen;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_vert_f:link,.txt_11_vert_f:visited,.txt_11_vert_f:active {
color: darkgreen;
}
.txt_11_vert_f:hover {
color: red;
}
.txt_12_vert_f {
color: darkgreen;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_vert_f:link,.txt_12_vertf:visited,.txt_12_vert_f:active {
color: darkgreen;
}
.txt_12_vert_f:hover {
color: red;
}
.txt_14_vert_f {
color: darkgreen;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_vert_f:link,.txt_14_vert_f:visited,.txt_14_vert_f:active {
color: darkgreen;
}
.txt_14_vert_f:hover {
color: red;
}
/*-----------------------------------------------------------------------------------*/
.txt_10_vert {
color: green;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.txt_10_vert:link,.txt_10_vert:visited,.txt_10_vert:active {
color: green;
}
.txt_10_vert:hover {
color: red;
}
.txt_11_vert {
color: green;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.txt_11_vert:link,.txt_11_vert:visited,.txt_11_vert:active {
color: green;
}
.txt_11_vert:hover {
color: red;
}
.txt_12_vert {
color: green;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
text-decoration: none;
}
.txt_12_vert:link,.txt_12_vert:visited,.txt_12_vert:active {
color: green;
}
.txt_12_vert:hover {
color: red;
}
.txt_14_vert {
color: green;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 14px;
text-decoration: none;
}
.txt_14_vert:link,.txt_14_vert:visited,.txt_14_vert:active {
color: green;
}
.txt_14_vert:hover {
color: red;
}
/*-----------------------------------------------------------------------------------*/
.fond_blanc {
background-color: #FFFFFF;
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.fond_gris_c, .fond_gris_c tr {
background-color: #FFFFFF;
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
background-image: url(../images/fond_4.bmp);
background-repeat: repeat-x;
}
.fond_gris_c2, .fond_gris_c2 tr {
background-color: #FBFBFB;
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.fond_bleu_c, .fond_bleu_c tr {
background-color: #D9EEF9;
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
background-image: url(../images/fond_1.bmp);
}
.fond_bleu_c2 {
background-color: #ECF4FF;
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.fond_bleu_f {
background-color: #003366;
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.fond_orange {
background-color: #FEEFE7;
color: darkgreen;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
font-weight: bold;
text-decoration: none;
background-image: url(../images/fond_3.jpg);
}
.fond_orange_2 {
background-color: #FFF8F4;
color: darkgreen;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
font-weight: bold;
text-decoration: none;
border: 1px solid orange;
border-collapse: collapse;
}
.vccDlgBody {
border: 3px solid #336699;
border-collapse: collapse;
color: black;
background-color: #EEFFEE;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
/* DEFINITION DES STYLES DE TABLEAUX */
.bordure_0 {
border: 0px solid;
color: black;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.bordure_1_bleu {
border: 1px solid green;
border-collapse: collapse;
color: black;
background-color: #FFFFFF;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.bordure_3_bleu {
border: 3px solid #336699;
border-collapse: collapse;
color: black;
background-color: #FFFFFF;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 11px;
text-decoration: none;
}
.indent {
margin-left: 20px;
}
/* DEFINITION DES STYLES D'OBJETS DE FORMULAIRE */
.Btn {
color: #003366;
text-align: center;
font-weight: bold;
background-color: #FFFFFF;
background-image: url(../images/ongletStyle1.jpg);
background-repeat: no-repeat;
background-position: center center;
}
.Btn:hover {
color: red;
}
.menu1h {
background-color: #003366;
color: white;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
font-weight: bold;
text-decoration: none;
border-top: 1px solid #003366;
border-bottom: 1px solid #003366;
border-left: 1px solid #003366;
border-right: 1px solid white;
border-collapse: collapse;
display: block;
}
.menu1h:hover {
background-color: white;
color: red;
border: 1px solid darkgreen;
border-collapse: collapse;
}
.menu1h_f {
background-color: #003366;
color: white;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
font-weight: bold;
text-decoration: none;
border: 1px solid #003366;
display: block;
}
.menu1h_f:hover {
background-color: white;
color: red;
border: 1px solid darkgreen;
border-collapse: collapse;
}
.menu1v {
background-color: #003366;
color: white;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
font-weight: bold;
text-decoration: none;
border: 1px solid #003366;
border-collapse: collapse;
display: block;
}
.menu1v:hover {
background-color: white;
color: red;
border: 1px solid darkgreen;
border-collapse: collapse;
}
.menu2v {
background-color: #5588BB;
color: white;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 12px;
font-weight: bold;
text-decoration: none;
border: 1px solid #4277AB;
border-collapse: collapse;
float: left;
display: block;
}
.menu2v:hover {
background-color: white;
color: red;
border: 1px solid darkgreen;
border-collapse: collapse;
}
.menuEDF {
background-color: #003366;
color: white;
font-family: Verdana, Arial, Lucida, Tahoma;
font-size: 10px;
text-decoration: none;
}
.menuEDF:hover {
color: #FF8800;
}
/*bouton bleu sur blanc*/
.Bouton {
color: #003366;
text-align: center;
font-weight: bold;
/* Ricardo cursor: hand; */
cursor: pointer;
background-color: #FFFFFF;
}
input {
border: 2px solid green;
color: #003366;
background-color: #FFFFFF;
background-image: url(../images/fond_4.bmp);
background-repeat: repeat-x;
}
.disabled_input {
border: 1px solid gray;
color: grey;
background-color: #FFFFFF;
background-image: url(../images/fond_4.bmp);
background-repeat: repeat-x;
}
.input0 {
border: 0px;
color: #003366;
background-color: #FFFFFF;
background-image: url(../images/fond_4.bmp);
}
.input2 {
border: 1px solid green;
color: #003366;
background-color: #FFFFFF;
background-image: url(../images/fond_4.bmp);
background-repeat: repeat-x;
}
.input3 {
border: 1px solid black;
color: #003366;
background-color: #EEEEEE;
background-image: url();
}
.input4 {
border: 1px solid blue;
color: #003366;
background-color: #FFFFFF;
background-image: url(../images/fond_4.bmp);
background-repeat: repeat-x;
}
.input5 {
border: 1px solid darkblue;
color: #003366;
background-color: #FFFFFF;
background-image: url(../images/fond_4.bmp);
background-repeat: repeat-x;
}
.input_btn {
border: 0px;
/* cursor: hand; */
cursor: pointer;
}
textarea {
border: 2px solid green;
color: #003366;
background-color: #FFFFFF;
background-image: url(../images/fond_5.bmp);
}
.TEXTAREA3 {
border: 1px solid green;
color: #003366;
background-color: #FFFFFF;
background-image: url();
}
.TEXTAREA4 {
border: 1px solid green;
color: #003366;
background-color: #EEEEEE;
background-image: url();
}
.hand {
cursor: hand;
cursor: pointer;
}

File diff suppressed because one or more lines are too long

View File

@ -1,12 +0,0 @@
@import "foo.css";
@import 'bar/foo.css' print;
@import '/css/foo.css'; /* abs, should not alter */
@import 'http://foo.com/css/foo.css'; /* abs, should not alter */
@import url(../foo.css) tv, projection;
@import url("/css/foo.css"); /* abs, should not alter */
@import url(/css2/foo.css); /* abs, should not alter */
@import url(data:image/gif;base64,AAAA); /* data, should not alter */
foo {background:url('bar/foo.png')}
foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */
foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */
foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */

View File

@ -1 +0,0 @@
@import "../foo.css";@import '../bar/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(../../foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('../bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)}

View File

@ -1,14 +0,0 @@
@import "foo.css";
@import 'bar/foo.css' print;
@import '../bar/foo.css' print;
@import '../../foo.css' print;
@import '/css/foo.css'; /* abs, should not alter */
@import 'http://foo.com/css/foo.css'; /* abs, should not alter */
@import url(../foo.css) tv, projection;
@import url("/css/foo.css"); /* abs, should not alter */
@import url(/css2/foo.css); /* abs, should not alter */
@import url(data:image/gif;base64,AAAA); /* data, should not alter */
foo {background:url('bar/foo.png')}
foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */
foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */
foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */

View File

@ -1 +0,0 @@
@import "/_test_files/css/foo.css";@import '/_test_files/css/bar/foo.css' print;@import '/_test_files/bar/foo.css' print;@import '/foo.css' print;@import '/css/foo.css';@import 'http://foo.com/css/foo.css';@import url(/_test_files/foo.css) tv, projection;@import url("/css/foo.css");@import url(/css2/foo.css);@import url(data:image/gif;base64,AAAA);foo{background:url('/_test_files/css/bar/foo.png')}foo{background:url('http://foo.com/css/foo.css')}foo{background:url("//foo.com/css/foo.css")}foo{background:url(data:image/gif;base64,AAAA)}

View File

@ -1 +0,0 @@
Test suite from http://search.cpan.org/~gtermars/CSS-Minifier-XS/

View File

@ -1,42 +0,0 @@
/* http://www.w3.org/TR/css3-selectors/ */
*
E[foo]
E[foo="bar"]
E[foo~="bar"]
E[foo^="bar"]
E[foo$="bar"]
E[foo*="bar"]
E[hreflang|="en"]
E:root
E:nth-child(n)
E:nth-last-child(n)
E:nth-of-type(n)
E:nth-last-of-type(n)
E:first-child
E:last-child
E:first-of-type
E:last-of-type
E:only-child
E:only-of-type
E:empty
E:link
E:visited
E:active
E:hover
E:focus
E:target
E:lang(fr)
E:enabled
E:disabled
E:checked
E::first-line
E::first-letter
E::selection
E::before
E::after
E.warning#myid
E:not(s)
> F
+ F
~ F {color: red;}

View File

@ -1,37 +0,0 @@
*
E[foo]
E[foo="bar"]
E[foo~="bar"]
E[foo^="bar"]
E[foo$="bar"]
E[foo*="bar"]
E[hreflang|="en"]
E:root
E:nth-child(n)
E:nth-last-child(n)
E:nth-of-type(n)
E:nth-last-of-type(n)
E:first-child
E:last-child
E:first-of-type
E:last-of-type
E:only-child
E:only-of-type
E:empty
E:link
E:visited
E:active
E:hover
E:focus
E:target
E:lang(fr)
E:enabled
E:disabled
E:checked
E::first-line
E::first-letter
E::selection
E::before
E::after
E.warning#myid
E:not(s)>F+F~F{color:red}

View File

@ -1,31 +0,0 @@
/* some CSS to try to exercise things in general */
@import url( /more.css );
body, td, th {
font-family: Verdana , "Bitstream Vera Sans" , sans-serif ;
font-size : 12px;
}
.nav {
margin-left: 20%;
}
#main-nav {
background-color: red;
border: 1px solid #00ff77;
}
div#content
h1 + p {
padding-top: 0;
margin-top: 0;
}
@media all and (min-width: 640px) {
#media-queries-1 { background-color: #0f0; }
}
@media screen and (max-width: 2000px) {
#media-queries-2 { background-color: #0f0; }
}

View File

@ -1,3 +0,0 @@
@import url(/more.css);body,td,th{font-family:Verdana,"Bitstream Vera Sans",sans-serif;font-size:12px}.nav{margin-left:20%}#main-nav{background-color:red;border:1px
solid #0f7}div#content
h1+p{padding-top:0;margin-top:0}@media all and (min-width: 640px){#media-queries-1{background-color:#0f0}}@media screen and (max-width: 2000px){#media-queries-2{background-color:#0f0}}

View File

@ -1,434 +0,0 @@
/* Based on the original Style Sheet for the fisubsilver v2 Theme for phpBB version 2+
Edited by Daz - http://www.forumimages.com - last updated 26-06-03 */
/* The content of the posts (body of text) */
/* General page style */
/* begin suggest post */
.float-l{
float: left;
}
.form-suggest{
height:200px;
background:#DEE2D0;
vertical-align: top;
}
.form-input input{
font-size: 10px;
}
.hide{
display:none;
}
.form-input textarea{
font-size: 11px;
width: 350px;
}
.form-label{
font-size: 10px;
font-weight: bold;
line-height: 25px;
padding-right: 10px;
text-align: right;
width: 100px;
color: #39738F;
}
.font-9{
font-size: 9px;
}
.form-topic{
font-weight:bold;
}
.form-error{
color:red;
}
.inline{
display: inline;
}
.space-10{
clear: both;
font-size: 10px;
height: 10px;
line-height: 10px;
}
.suggest-success{
color:green;
padding-left:10px;
font-size:11px;
font-weight:bold;
}
.top{
vertical-align: top;
}
/* end suggest post */
table td{
padding:3px;
}
a:link,a:active,a:visited,a.postlink{
color: #006699;
text-decoration: none;
}
a:hover{
color: #DD6900;
}
a.admin:hover,a.mod:hover{
color: #DD6900;
}
a.but,a.but:hover,a.but:visited{
color: #000000;
text-decoration: none;
}
a.topictitle:visited{
color: #5493B4;
}
a.topictitle:hover{
color: #DD6900;
}
body{
color: #000000;
font: 11px Verdana,Arial,Helvetica,sans-serif;
margin: 0 10px 10px 10px;
padding: 0;
overflow:auto;
}
/* General font families for common tags */
font,th,td,p{
font: 12px Verdana,Arial,Helvetica,sans-serif;
}
/* Form elements */
form{
display: inline;
}
hr{
border: 0px solid #FFFFFF;
border-top-width: 1px;
height: 0px;
}
/* Gets rid of the need for border="0" on hyperlinked images */
img{
border: 0 solid;
}
input{
font: 11px Verdana,Arial,Helvetica,sans-serif;
}
input.button,input.liteoption,.fakebut{
background: #FAFAFA;
border: 1px solid #000000;
font-size: 11px;
}
input.catbutton{
background: #FAFAFA;
border: 1px solid #000000;
font-size: 10px;
}
input.mainoption{
background: #FAFAFA;
border: 1px solid #000000;
font-size: 11px;
font-weight: bold;
}
input.post,textarea.post{
background: #FFFFFF;
border: 1px solid #000000;
font: 11px Verdana,Arial,Helvetica,sans-serif;
padding-bottom: 2px;
padding-left: 2px;
}
select{
background: #FFFFFF;
font: 11px Verdana,Arial,Helvetica,sans-serif;
}
table{
text-align: left;
}
td{
vertical-align: middle;
}
/* Category gradients*/
td.cat{
background-color: #C2C6BA;
font-weight: bold;
height: 20px;
letter-spacing: 1px;
text-indent: 4px;
}
td.genmed,.genmed{
font-size: 11px;
}
/* This is for the table cell above the Topics,Post & Last posts on the index.php */
td.rowpic{
background: #C2C6BA;
}
td.spacerow{
background: #E5E6E2;
}
/* Table Header cells */
th{
background-color: #FADD31;
background-image: url(images/cellpic3.gif);
background-repeat: repeat-x;
color: #68685E;
font-size: 11px;
font-weight: bold;
line-height:16px;
height: 16px;
padding-left: 8px;
padding-right: 8px;
text-align: center;
white-space: nowrap;
}
/* Admin & Moderator Colours MODification */
.admin,.mod{
font-size: 11px;
font-weight: bold;
}
.admin,a.admin,a.admin:visited{
color: #FFA34F;
}
/* This is the border line & background colour round the entire page */
.bodyline{
background: #FFFFFF;
border: 1px solid #98AAB1;
}
.center{
text-align: center;
}
/* Code blocks */
.code{
background: #FAFAFA;
border: 1px solid #D1D7DC;
color: #006600;
font: 12px Courier,"Courier New",sans-serif;
padding: 5px;
}
/* This is for the error messages that pop up */
.errorline{
background: #E5E6E2;
border: 1px solid #8F8B8B;
color:#D92A2A;
}
.explaintitle{
color: #5C81B1;
font-size: 11px;
font-weight: bold;
}
/* This is the outline round the main forum tables */
.forumline{
background: #FFFFFF;
}
/* General text */
.gensmall{
font-size: 10px;
}
.h1-font{
color: #006699;
display: inline;
font: bold 13px Verdana, Arial, Helvetica, sans-serif;
margin: 0;
text-decoration: none;
}
.h2-font{
display: inline;
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
}
.height1{
height: 1px;
}
.height22{
height: 22px;
}
.height25{
height: 25px;
}
.height28{
height: 28px;
}
.height30{
height: 30px;
}
.height40{
height: 40px;
}
/* This is the line in the posting page which shows the rollover
help line. Colour value in row2 */
.helpline{
border: 0 solid;
font-size: 10px;
}
.imgfolder{
margin: 1px 4px 1px 4px;
}
.imgspace{
margin-left: 1px;
margin-right: 2px;
}
/* Specify the space around images */
.imgtopic,.imgicon{
margin-left: 3px;
}
.left{
text-align: left;
}
/* The largest text used in the index page title and toptic title etc. */
.maintitle,h1,h2{
color: #5C81B1;
font: bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;
text-decoration: none;
}
.maxwidth{
width: 100%;
}
.mod,a.mod,a.mod:visited{
color: #006600;
}
/* Name of poster in viewmsg.php and viewtopic.php and other places */
.name{
font-size: 11px;
font-weight: bold;
}
/* Used for the navigation text,(Page 1,2,3 etc) and the navigation bar when in a forum */
.nav{
font-size: 11px;
font-weight: bold;
}
.nowrap{
white-space: nowrap;
}
.postbody{
font-size: 12px;
line-height: 125%;
}
.postbody a{
text-decoration: underline;
}
/* Location,number of posts,post date etc */
.postdetails{
color: #00396A;
font-size: 10px;
}
/* Quote blocks */
.quote{
background: #F3F3EF;
border: 1px solid #C2C6BA;
color: #006699;
font-size: 11px;
line-height: 125%;
}
.right{
text-align: right;
}
/* Main table cell colours and backgrounds */
.row1{
background: #F0F0EB;
}
.row2,.helpline{
background: #E5E6E2;
}
.row3{
background: #DBDBD4;
}
.subtitle,h2{
font: bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;
text-decoration: none;
}
/* titles for the topics:could specify viewed link colour too */
.topictitle {
color: #000000;
font-size: 11px;
font-weight: bold;
}
.underline{
text-decoration: underline;
}
.top{
vertical-align:top;
}
.image-hspace{
margin-right:3px;
}
.clear{
clear:both;
}

View File

@ -1,18 +0,0 @@
.float-l{float:left}.form-suggest{height:200px;background:#DEE2D0;vertical-align:top}.form-input
input{font-size:10px}.hide{display:none}.form-input
textarea{font-size:11px;width:350px}.form-label{font-size:10px;font-weight:bold;line-height:25px;padding-right:10px;text-align:right;width:100px;color:#39738F}.font-9{font-size:9px}.form-topic{font-weight:bold}.form-error{color:red}.inline{display:inline}.space-10{clear:both;font-size:10px;height:10px;line-height:10px}.suggest-success{color:green;padding-left:10px;font-size:11px;font-weight:bold}.top{vertical-align:top}table
td{padding:3px}a:link,a:active,a:visited,a.postlink{color:#069;text-decoration:none}a:hover{color:#DD6900}a.admin:hover,a.mod:hover{color:#DD6900}a.but,a.but:hover,a.but:visited{color:#000;text-decoration:none}a.topictitle:visited{color:#5493B4}a.topictitle:hover{color:#DD6900}body{color:#000;font:11px Verdana,Arial,Helvetica,sans-serif;margin:0
10px 10px 10px;padding:0;overflow:auto}font,th,td,p{font:12px Verdana,Arial,Helvetica,sans-serif}form{display:inline}hr{border:0px
solid #FFF;border-top-width:1px;height:0px}img{border:0
solid}input{font:11px Verdana,Arial,Helvetica,sans-serif}input.button,input.liteoption,.fakebut{background:#FAFAFA;border:1px
solid #000;font-size:11px}input.catbutton{background:#FAFAFA;border:1px
solid #000;font-size:10px}input.mainoption{background:#FAFAFA;border:1px
solid #000;font-size:11px;font-weight:bold}input.post,textarea.post{background:#FFF;border:1px
solid #000;font:11px Verdana,Arial,Helvetica,sans-serif;padding-bottom:2px;padding-left:2px}select{background:#FFF;font:11px Verdana,Arial,Helvetica,sans-serif}table{text-align:left}td{vertical-align:middle}td.cat{background-color:#C2C6BA;font-weight:bold;height:20px;letter-spacing:1px;text-indent:4px}td.genmed,.genmed{font-size:11px}td.rowpic{background:#C2C6BA}td.spacerow{background:#E5E6E2}th{background-color:#FADD31;background-image:url(images/cellpic3.gif);background-repeat:repeat-x;color:#68685E;font-size:11px;font-weight:bold;line-height:16px;height:16px;padding-left:8px;padding-right:8px;text-align:center;white-space:nowrap}.admin,.mod{font-size:11px;font-weight:bold}.admin,a.admin,a.admin:visited{color:#FFA34F}.bodyline{background:#FFF;border:1px
solid #98AAB1}.center{text-align:center}.code{background:#FAFAFA;border:1px
solid #D1D7DC;color:#060;font:12px Courier,"Courier New",sans-serif;padding:5px}.errorline{background:#E5E6E2;border:1px
solid #8F8B8B;color:#D92A2A}.explaintitle{color:#5C81B1;font-size:11px;font-weight:bold}.forumline{background:#FFF}.gensmall{font-size:10px}.h1-font{color:#069;display:inline;font:bold 13px Verdana,Arial,Helvetica,sans-serif;margin:0;text-decoration:none}.h2-font{display:inline;font-family:Verdana,Arial,Helvetica,sans-serif;font-size:11px}.height1{height:1px}.height22{height:22px}.height25{height:25px}.height28{height:28px}.height30{height:30px}.height40{height:40px}.helpline{border:0
solid;font-size:10px}.imgfolder{margin:1px
4px 1px 4px}.imgspace{margin-left:1px;margin-right:2px}.imgtopic,.imgicon{margin-left:3px}.left{text-align:left}.maintitle,h1,h2{color:#5C81B1;font:bold 20px/120% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.maxwidth{width:100%}.mod,a.mod,a.mod:visited{color:#060}.name{font-size:11px;font-weight:bold}.nav{font-size:11px;font-weight:bold}.nowrap{white-space:nowrap}.postbody{font-size:12px;line-height:125%}.postbody
a{text-decoration:underline}.postdetails{color:#00396A;font-size:10px}.quote{background:#F3F3EF;border:1px
solid #C2C6BA;color:#069;font-size:11px;line-height:125%}.right{text-align:right}.row1{background:#F0F0EB}.row2,.helpline{background:#E5E6E2}.row3{background:#DBDBD4}.subtitle,h2{font:bold 18px/180% "Trebuchet MS",Verdana,Arial,Helvetica,sans-serif;text-decoration:none}.topictitle{color:#000;font-size:11px;font-weight:bold}.underline{text-decoration:underline}.top{vertical-align:top}.image-hspace{margin-right:3px}.clear{clear:both}

View File

@ -1,10 +0,0 @@
/* test unusual, but valid strings in CSS */
foo[attr="multiple spaces"] {
content: "Hello World!";
}
foo[attr="Hel\
lo"] {
content: " \"World\"";
}

View File

@ -1,2 +0,0 @@
foo[attr="multiple spaces"]{content:"Hello World!"}foo[attr="Hel\
lo"]{content:" \"World\""}

View File

@ -1,658 +0,0 @@
/* from http://www.vladimirated.com/web-development-minify-css-using-php-and-cssmin-class */
#comments_inviter #close_me {
clear: both;
text-align: center;
border-top: 1px solid #eeeeee;
padding-top: 10px;
}
#comments_inviter #close_me span {
color: #108eed;
cursor: pointer;
font-weight: bold;
}
#comments_inviter img {
float: left;
margin-right: 3px;
margin-bottom: 10px;
}
#comments_inviter {
width: 200px;
background-color: #FFFFFF;
border: 4px solid #eeeeee;
font-size: 10px;
font-family: verdana;
padding: 10px;
color: #333333;
}
.one_com {
background-color: #FAFAFA;
padding: 10px;
margin-bottom: 20px;
border: 1px solid #EEEEEE;
}
.one_com .com_says, .one_com .com_det {
text-transform: lowercase;
color: #333333;
padding: 0px;
font-family: verdana;
margin: 0px;
font-size: 13px;
font-weight: bold;
}
.flvPlayer {
text-align: center;
border: 5px solid #dddddd;
width: 320px;
}
.one_com .com_det {
font-size: 10px;
font-weight: normal;
margin-bottom: 20px;
padding-bottom: 10px;
border-bottom: 8px solid #eeeeee;
}
.one_com .com_det a {
text-decoration: none;
}
.one_com .com_txt {
background-color: #ffffff;
margin-bottom: 10px;
border-bottom: 2px solid #eeeeee
}
.one_com .com_txt p {
font-family: verdana;
font-size: 13px;
color: #777777;
margin: 0px;
padding: 5px;
padding-bottom: 10px;
text-transform: lowercase;
}
.one_com .com_says a {
color: #333333;
}
.one_com .com_det a {
color: #333333;
}
.post_box .related_posts {
}
.post_box .related_posts p {
padding: 0px;
margin: 0px;
padding-bottom: 20px;
padding-left: 35px;
font-family: verdana;
}
.post_box .related_posts a {
color: #108eed;
}
.post_nav_2 p {
text-align: center;
color: #cccccc;
font-family: verdana;
}
.post_box .related_posts h3, #comments_box #respond, .comments_posted h3 {
padding: 0px;
margin: 0px;
font-size: 18px;
color: #FF8000;
padding-top: 30px;
margin-bottom: 20px;
width: 300px;
border-bottom: 5px solid #e0e0e0;
}
.comments_posted {
margin-bottom: 50px;
}
.comments_posted h3 {
padding: 0px;
margin: 0px;
margin-bottom: 20px;
}
.cmt_txtarea {
width: 300px;
height: 100px;
}
#comments_box #respond {
padding-top: 0px;
margin-bottom: 0px;
}
.pagetitle {
color: #65DA33;
text-align: center;
}
#searchform {
padding: 0px;
margin: 0px;
}
.si {
background-color: #FFFFEE;
border: 1px solid #e0e0e0;
}
#rightcol #r_news, #rightcol #linksbro, #rightcol #quick_tags {
margin-top: 30px;
padding-bottom: 10px;
}
#post_nav p {
padding: 0px;
margin: 0px;
padding-bottom: 5px;
}
#post_nav {
text-align: left;
padding-bottom: 15px;
}
#post_nav a, .post_nav_2 p a {
text-decoration: none;
font-family: Verdana;
font-size: 12px;
color: #108eed;
}
#post_nav a:hover, .post_nav_2 p a:hover {
text-decoration: underline;
color: #FF8000;
}
#rightcol #about {
padding-bottom: 10px;
}
#rightcol #r_news input {
color: #333333;
font-size: 12px;
}
#header {
height: 200px;
width: 100%;
background-image: url('images/header_bg.jpg');
background-repeat: x-repeat;
}
#header img {
float: right;
margin-right: -3px;
z-index: 100;
}
.tags {
text-transform: lowercase;
color: #333333;
font-family: arial;
font-size: 12px;
border-top: 2px dotted #EEEEEE;
width: 300px;
padding-top: 20px;
padding-bottom: 0px;
margin-top: 0px;
padding-left: 20px;
padding-right: 20px;
}
.tags a {
color: #108eed;
}
.tags p {
text-align: left;
margin: 0px;
padding: 0px;
}
blockquote strong {
font-family: verdana;
display: block;
margin-top: 10px;
color: #FF0000;
font-style: italic;
text-align: right;
}
blockquote {
margin: 0px;
background-color: #eeeeee;
border: 2px solid #dddddd;
padding: 24px;
padding-top: 10px;
padding-left: 60px;
padding-bottom: 10px;
font-size: 13px;
color: #333333;
margin-bottom: 30px;
margin-top: 10px;
}
html>body #header img { margin-right: 0px; }
#subscribe h3 {
color: #ff0000;
margin-top: 30px;
padding: 20px;
}
.post_actions a{
color: #108eed;
}
.post_actions {
border-top: 4px solid #DDDDDD;
border-bottom: 1px solid #EEEEEE;
text-align: center;
background-color: #FFFFDd;
color: #dddddd;
white-space: no-wrap;
padding-left: 20px;
padding-bottom: 5px;
text-transform: capitalize;
}
#subscribe td {
color: #333333;
font-size: 12px;
text-transform: lowercase;
}
#subscribe input {
font-size: 13px;
color: #333333;
}
.post_content {
font-size: 13px;
margin-top: 10px;
padding-bottom: 10px;
text-align: justify;
font-family: verdana;
}
.post_content p {
margin: 0px;
padding: 0px;
padding-bottom: 20px;
line-height: 20px;
}
#header h1 {
z-index: 200;
margin: 0px;
position: absolute;
float: left;
text-transform: lowercase;
padding: 0px;
font-size: 45px;
margin-top: 70px;
margin-left: 40px;
}
#header h1 a {
white-space: no-wrap;
text-decoration: none;
color: #FAFAFA;
display: block
}
#header h1 a:hover {
color: #FAFAFA;
border-bottom: 3px dotted #FAFAFA;
}
html>body #header h1 { margin-left: 60px; }
body {
margin: 0px;
padding: 0px;
height: 100%;
width: 100%;
font-family: 'Lucida Sans Unicode', 'Lucida Grande', Sans-Serif, Verdana, Arial;
font-size: 12px;
}
#leftcol {
float: left;
width: 200px;
margin-left: 0px;
margin-top: 17px;
color: #000;
padding: 3px;
height: 100%;
}
#leftcol .box_head h3 {
text-transform: uppercase;
padding: 0px;
margin: 0px;
font-family: georgia;
font-size: 18px;
color: #dddddd;
border-top: 4px solid #dddddd;
border-bottom: 4px solid #cccccc;
padding-left: 10px;
padding-top: 10px;
padding-bottom: 10px;
background-image: url('images/stripesbg.png');
margin-bottom: 10px;
}
#leftcol .box_head input {
text-transform: lowercase;
color: #333333;
}
#leftcol .box_head {
margin-left: 7px;
background-color: #ffefd4;
border-bottom: 2px solid #eeeeee;
padding-bottom: 20px;
margin-bottom: 30px;
}
#leftcol .box_head p a {
color: #0a2d4d;
display: block;
text-decoration: none;
border-bottom: 3px solid #fefefe;
padding-top: 20px;
text-transform: lowercase;
padding-bottom: 20px;
padding-left: 5px;
padding-right: 5px;
}
#leftcol .box_head p a:hover {
background-color: #fafafa;
border-bottom: 3px solid #eeeeee;
color: #000000;
}
#leftcol .box_head p {
text-align: left;
margin: 0px;
width: 170px;
padding-bottom: 0px;
padding-top: 0px;
font-size: 11px;
}
#rightcol {
position: absolute;
left: 77%;
top: 278px;
border: 3px solid #eeeeee;
width: 200px;
z-index: 3;
color: #333333;
padding: 10px;
text-transform: lowercase;
}
#rightcol p {
padding: 0px;
marging: 0px;
text-align: justify;
}
#rightcol #about img, #rightcol #linksbro img {
border: 5px solid #eeeeee;
}
#rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags h3 {
background-color: #fafafa;
border: 1px dotted #e0e0e0;
font-size: 14px;
color: #104bbc;
padding: 5px;
padding-top: 10px;
font-family: Arial;
padding-bottom: 10px;
}
#rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p a {
color: #108eed;
}
#rightcol #about p, #rightcol #r_news p, #rightcol #linksbro p {
font-size: 12px;
text-align: left;
}
#content_warp {
margin: 20px 25% 0 215px;
padding: 3px;
color: #000;
background-color: #ededed;
}
#content {
margin: 5px;
background-color: #FFFFFF;
padding: 10px;
}
#footer {
width: 99%;
margin-top: 30px;
height: 98px;
background-color: #101b1d;
}
#footer td a {
color: #FF8000;
}
#footer td a img {
border: 2px solid #108eed;
}
#footer td p {
font-family: Verdana;
font-size: 10px;
color: #c0c0c0;
padding: 0px;
margin: 0px;
text-align: center;
padding-bottom: 10px;
}
.s_offer {
color: #65DA33;
font-size: 20px;
font-weight: bold;
font-style: normal;
}
.post_box {
text-transform: lowercase;
margin-bottom: 40px;
}
#newsletter_box {
text-transform: lowercase;
margin-bottom: 10px;
margin-top: 30px;
font-style: normal;
background-color: #ffffff;
border: 5px solid #dddddd;
}
#newsletter_head {
color: #EEEEEE;
font-family: Georgia;
background-image: url('images/stripesbg.png');
padding: 10px;
padding-left: 30px;
border-bottom: 5px solid #dddddd;
}
#newsletter_body {
color: #333333;
font-family: Verdana;
text-align: justify;
background-color: #FFFFFF;
padding: 10px;
font-size: 13px;
}
.s_offer {
color: #65DA33;
font-size: 26px;
font-weight: bold;
font-style: normal;
}
.post_title a {
color: #EEEEEE;
text-decoration: none;
}
.post_title a:hover {
color: #c0c0c0;
}
.post_title {
background-image: url('images/stripe_post.png');
text-transform: uppercase;
font-size: 18px;
font-family: georgia;
padding: 10px;
border-top: 4px solid #c0c0c0;
margin: 0px;
border-bottom: 2px solid #ffffdd;
}
.post_det {
text-transform: none;
margin: 0px;
border-top: 1px solid #f0f0f0;
padding: 0px;
padding-top: 5px;
color: #999999;
font-size: 10px;
font-family: verdana;
margin-bottom: 20px;
background-color: #eeeeee;
padding-bottom: 5px;
padding-left: 10px;
text-align: left;
border-bottom: 2px solid #dddddd;
}
.post_det a {
color: #999999;
text-decoration: none;
}
.subtle {
text-transform: lowercase;
font-size: 10px;
font-family: verdana;
color: #108eed;
text-align: justify;
}
#top_menu #navlist, #top_menu #navlist li {
padding:0px;
margin: 0px;
padding-top: 14px;
text-transform: lowercase;
padding-bottom: 17px;
padding-left: 30px;
border-left: 1px solid #65cdef;
}
#top_menu #navlist, #top_menu #navlist li #first {
border-left: 0px;
}
#top_menu #navlist {
padding-left: 30px;
background-color: #1dabd9;
border-top: 5px solid #0e96c3;
border-bottom: 5px solid #0e96c3;
}
#top_menu #navlist li {
color: #444444;
font-size: 10px;
display: inline;
list-style-type: none;
padding-right: 30px;
}
#top_menu #navlist li a {
text-decoration: none;
font-family: Verdana;
color: #fafafa;
font-size: 12px;
font-weight: bold;
}
#top_menu #navlist li a:hover {
color: #333333;
}
.post_content a {
color: #108eed;
}
ul#tagcloud { padding:0; margin:0; text-align:center; list-style:none; }
ul#tagcloud li { display:inline; font-size:70%; color:#ccc; background: none; padding: 0;}
ul#tagcloud li a, ul#tagcloud li a:link { text-decoration:none; }
ul#tagcloud li a:hover { text-decoration:underline; }
ul#tagcloud li.t1 a { color:#797979; font-size: 120%; }
ul#tagcloud li.t2 a { color:#6d6d6d; font-size: 160%; }
ul#tagcloud li.t3 a { color:#616161; font-size: 190%; }
ul#tagcloud li.t4 a { color:#555555; font-size: 210%; }
ul#tagcloud li.t5 a { color:#484848; font-size: 230%; }
ul#tagcloud li.t6 a { color:#3c3c3c; font-size: 250%; }
ul#tagcloud li.t7 a { color:#303030; font-size: 270%; }
ul#tagcloud li.t8 a { color:#242424; font-size: 290%; }
ul#tagcloud li.t9 a { color:#181818; font-size: 310%; }
ul#tagcloud li.t10 a { color:#0c0c0c; font-size: 330%; }

View File

@ -1,79 +0,0 @@
#comments_inviter
#close_me{clear:both;text-align:center;border-top:1px solid #eee;padding-top:10px}#comments_inviter #close_me
span{color:#108eed;cursor:pointer;font-weight:bold}#comments_inviter
img{float:left;margin-right:3px;margin-bottom:10px}#comments_inviter{width:200px;background-color:#FFF;border:4px
solid #eee;font-size:10px;font-family:verdana;padding:10px;color:#333}.one_com{background-color:#FAFAFA;padding:10px;margin-bottom:20px;border:1px
solid #EEE}.one_com .com_says, .one_com
.com_det{text-transform:lowercase;color:#333;padding:0px;font-family:verdana;margin:0px;font-size:13px;font-weight:bold}.flvPlayer{text-align:center;border:5px
solid #ddd;width:320px}.one_com
.com_det{font-size:10px;font-weight:normal;margin-bottom:20px;padding-bottom:10px;border-bottom:8px solid #eee}.one_com .com_det
a{text-decoration:none}.one_com
.com_txt{background-color:#fff;margin-bottom:10px;border-bottom:2px solid #eee}.one_com .com_txt
p{font-family:verdana;font-size:13px;color:#777;margin:0px;padding:5px;padding-bottom:10px;text-transform:lowercase}.one_com .com_says
a{color:#333}.one_com .com_det
a{color:#333}.post_box
.related_posts{}.post_box .related_posts
p{padding:0px;margin:0px;padding-bottom:20px;padding-left:35px;font-family:verdana}.post_box .related_posts
a{color:#108eed}.post_nav_2
p{text-align:center;color:#ccc;font-family:verdana}.post_box .related_posts h3, #comments_box #respond, .comments_posted
h3{padding:0px;margin:0px;font-size:18px;color:#FF8000;padding-top:30px;margin-bottom:20px;width:300px;border-bottom:5px solid #e0e0e0}.comments_posted{margin-bottom:50px}.comments_posted
h3{padding:0px;margin:0px;margin-bottom:20px}.cmt_txtarea{width:300px;height:100px}#comments_box
#respond{padding-top:0px;margin-bottom:0px}.pagetitle{color:#65DA33;text-align:center}#searchform{padding:0px;margin:0px}.si{background-color:#FFE;border:1px
solid #e0e0e0}#rightcol #r_news, #rightcol #linksbro, #rightcol
#quick_tags{margin-top:30px;padding-bottom:10px}#post_nav
p{padding:0px;margin:0px;padding-bottom:5px}#post_nav{text-align:left;padding-bottom:15px}#post_nav a, .post_nav_2 p
a{text-decoration:none;font-family:Verdana;font-size:12px;color:#108eed}#post_nav a:hover, .post_nav_2 p a:hover{text-decoration:underline;color:#FF8000}#rightcol
#about{padding-bottom:10px}#rightcol #r_news
input{color:#333;font-size:12px}#header{height:200px;width:100%;background-image:url('images/header_bg.jpg');background-repeat:x-repeat}#header
img{float:right;margin-right: -3px;z-index:100}.tags{text-transform:lowercase;color:#333;font-family:arial;font-size:12px;border-top:2px dotted #EEE;width:300px;padding-top:20px;padding-bottom:0px;margin-top:0px;padding-left:20px;padding-right:20px}.tags
a{color:#108eed}.tags
p{text-align:left;margin:0px;padding:0px}blockquote
strong{font-family:verdana;display:block;margin-top:10px;color:#F00;font-style:italic;text-align:right}blockquote{margin:0px;background-color:#eee;border:2px
solid #ddd;padding:24px;padding-top:10px;padding-left:60px;padding-bottom:10px;font-size:13px;color:#333;margin-bottom:30px;margin-top:10px}html>body #header
img{margin-right:0px}#subscribe
h3{color:#f00;margin-top:30px;padding:20px}.post_actions
a{color:#108eed}.post_actions{border-top:4px solid #DDD;border-bottom:1px solid #EEE;text-align:center;background-color:#FFD;color:#ddd;white-space:no-wrap;padding-left:20px;padding-bottom:5px;text-transform:capitalize}#subscribe
td{color:#333;font-size:12px;text-transform:lowercase}#subscribe
input{font-size:13px;color:#333}.post_content{font-size:13px;margin-top:10px;padding-bottom:10px;text-align:justify;font-family:verdana}.post_content
p{margin:0px;padding:0px;padding-bottom:20px;line-height:20px}#header
h1{z-index:200;margin:0px;position:absolute;float:left;text-transform:lowercase;padding:0px;font-size:45px;margin-top:70px;margin-left:40px}#header h1
a{white-space:no-wrap;text-decoration:none;color:#FAFAFA;display:block}#header h1 a:hover{color:#FAFAFA;border-bottom:3px dotted #FAFAFA}html>body #header
h1{margin-left:60px}body{margin:0px;padding:0px;height:100%;width:100%;font-family:'Lucida Sans Unicode','Lucida Grande',Sans-Serif,Verdana,Arial;font-size:12px}#leftcol{float:left;width:200px;margin-left:0px;margin-top:17px;color:#000;padding:3px;height:100%}#leftcol .box_head
h3{text-transform:uppercase;padding:0px;margin:0px;font-family:georgia;font-size:18px;color:#ddd;border-top:4px solid #ddd;border-bottom:4px solid #ccc;padding-left:10px;padding-top:10px;padding-bottom:10px;background-image:url('images/stripesbg.png');margin-bottom:10px}#leftcol .box_head
input{text-transform:lowercase;color:#333}#leftcol
.box_head{margin-left:7px;background-color:#ffefd4;border-bottom:2px solid #eee;padding-bottom:20px;margin-bottom:30px}#leftcol .box_head p
a{color:#0a2d4d;display:block;text-decoration:none;border-bottom:3px solid #fefefe;padding-top:20px;text-transform:lowercase;padding-bottom:20px;padding-left:5px;padding-right:5px}#leftcol .box_head p a:hover{background-color:#fafafa;border-bottom:3px solid #eee;color:#000}#leftcol .box_head
p{text-align:left;margin:0px;width:170px;padding-bottom:0px;padding-top:0px;font-size:11px}#rightcol{position:absolute;left:77%;top:278px;border:3px
solid #eee;width:200px;z-index:3;color:#333;padding:10px;text-transform:lowercase}#rightcol
p{padding:0px;marging:0px;text-align:justify}#rightcol #about img, #rightcol #linksbro
img{border:5px
solid #eee}#rightcol #about h3, #rightcol #r_news h3, #rightcol #linksbro h3, #rightcol #quick_tags
h3{background-color:#fafafa;border:1px
dotted #e0e0e0;font-size:14px;color:#104bbc;padding:5px;padding-top:10px;font-family:Arial;padding-bottom:10px}#rightcol #about p a, #rightcol #r_news p a, #rightcol #linksbro p
a{color:#108eed}#rightcol #about p, #rightcol #r_news p, #rightcol #linksbro
p{font-size:12px;text-align:left}#content_warp{margin:20px
25% 0 215px;padding:3px;color:#000;background-color:#ededed}#content{margin:5px;background-color:#FFF;padding:10px}#footer{width:99%;margin-top:30px;height:98px;background-color:#101b1d}#footer td
a{color:#FF8000}#footer td a
img{border:2px
solid #108eed}#footer td
p{font-family:Verdana;font-size:10px;color:#c0c0c0;padding:0px;margin:0px;text-align:center;padding-bottom:10px}.s_offer{color:#65DA33;font-size:20px;font-weight:bold;font-style:normal}.post_box{text-transform:lowercase;margin-bottom:40px}#newsletter_box{text-transform:lowercase;margin-bottom:10px;margin-top:30px;font-style:normal;background-color:#fff;border:5px
solid #ddd}#newsletter_head{color:#EEE;font-family:Georgia;background-image:url('images/stripesbg.png');padding:10px;padding-left:30px;border-bottom:5px solid #ddd}#newsletter_body{color:#333;font-family:Verdana;text-align:justify;background-color:#FFF;padding:10px;font-size:13px}.s_offer{color:#65DA33;font-size:26px;font-weight:bold;font-style:normal}.post_title
a{color:#EEE;text-decoration:none}.post_title a:hover{color:#c0c0c0}.post_title{background-image:url('images/stripe_post.png');text-transform:uppercase;font-size:18px;font-family:georgia;padding:10px;border-top:4px solid #c0c0c0;margin:0px;border-bottom:2px solid #ffd}.post_det{text-transform:none;margin:0px;border-top:1px solid #f0f0f0;padding:0px;padding-top:5px;color:#999;font-size:10px;font-family:verdana;margin-bottom:20px;background-color:#eee;padding-bottom:5px;padding-left:10px;text-align:left;border-bottom:2px solid #ddd}.post_det
a{color:#999;text-decoration:none}.subtle{text-transform:lowercase;font-size:10px;font-family:verdana;color:#108eed;text-align:justify}#top_menu #navlist, #top_menu #navlist
li{padding:0px;margin:0px;padding-top:14px;text-transform:lowercase;padding-bottom:17px;padding-left:30px;border-left:1px solid #65cdef}#top_menu #navlist, #top_menu #navlist li
#first{border-left:0px}#top_menu
#navlist{padding-left:30px;background-color:#1dabd9;border-top:5px solid #0e96c3;border-bottom:5px solid #0e96c3}#top_menu #navlist
li{color:#444;font-size:10px;display:inline;list-style-type:none;padding-right:30px}#top_menu #navlist li
a{text-decoration:none;font-family:Verdana;color:#fafafa;font-size:12px;font-weight:bold}#top_menu #navlist li a:hover{color:#333}.post_content
a{color:#108eed}ul#tagcloud{padding:0;margin:0;text-align:center;list-style:none}ul#tagcloud
li{display:inline;font-size:70%;color:#ccc;background:none;padding:0}ul#tagcloud li a, ul#tagcloud li a:link{text-decoration:none}ul#tagcloud li a:hover{text-decoration:underline}ul#tagcloud li.t1
a{color:#797979;font-size:120%}ul#tagcloud li.t2
a{color:#6d6d6d;font-size:160%}ul#tagcloud li.t3
a{color:#616161;font-size:190%}ul#tagcloud li.t4
a{color:#555;font-size:210%}ul#tagcloud li.t5
a{color:#484848;font-size:230%}ul#tagcloud li.t6
a{color:#3c3c3c;font-size:250%}ul#tagcloud li.t7
a{color:#303030;font-size:270%}ul#tagcloud li.t8
a{color:#242424;font-size:290%}ul#tagcloud li.t9
a{color:#181818;font-size:310%}ul#tagcloud li.t10
a{color:#0c0c0c;font-size:330%}

View File

@ -1,14 +0,0 @@
@import "/_test_files/css_uriRewriter/foo.css";
@import '/_test_files/css_uriRewriter/bar/foo.css' print;
@import '/_test_files/bar/foo.css' print;
@import '/foo.css' print;
@import '/css/foo.css'; /* abs, should not alter */
@import 'http://foo.com/css/foo.css'; /* abs, should not alter */
@import url(/_test_files/foo.css) tv, projection;
@import url("/css/foo.css"); /* abs, should not alter */
@import url(/css2/foo.css); /* abs, should not alter */
@import url(data:image/gif;base64,AAAA); /* data, should not alter */
foo {background:url('/_test_files/css_uriRewriter/bar/foo.png')}
foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */
foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */
foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */

View File

@ -1,14 +0,0 @@
@import "foo.css";
@import 'bar/foo.css' print;
@import '../bar/foo.css' print;
@import '../../foo.css' print;
@import '/css/foo.css'; /* abs, should not alter */
@import 'http://foo.com/css/foo.css'; /* abs, should not alter */
@import url(../foo.css) tv, projection;
@import url("/css/foo.css"); /* abs, should not alter */
@import url(/css2/foo.css); /* abs, should not alter */
@import url(data:image/gif;base64,AAAA); /* data, should not alter */
foo {background:url('bar/foo.png')}
foo {background:url('http://foo.com/css/foo.css');} /* abs, should not alter */
foo {background:url("//foo.com/css/foo.css");} /* protocol relative, should not alter */
foo {background:url(data:image/gif;base64,AAAA);} /* data, should not alter */

View File

@ -1,96 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<!-- comments get removed -->
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
<meta name="author" content="Dave Shea" />
<!-- also whitespace around block or undisplayed elements -->
<meta name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display" />
<meta name="description" content="A demonstration of what can be accomplished visually through CSS-based design." />
<meta name="robots" content="all" />
<title>css Zen Garden: The Beauty in CSS Design</title>
<!-- to correct the unsightly Flash of Unstyled Content. http://www.bluerobot.com/web/css/fouc.asp -->
<script type="text/javascript"><!--
// js comment inside SCRIPT element
var is = {
ie: navigator.appName == 'Microsoft Internet Explorer',
java: navigator.javaEnabled(),
ns: navigator.appName == 'Netscape',
ua: navigator.userAgent.toLowerCase(),
version: parseFloat(navigator.appVersion.substr(21)) ||
parseFloat(navigator.appVersion),
win: navigator.platform == 'Win32'
}
is.mac = is.ua.indexOf('mac') >= 0;
if (is.ua.indexOf('opera') >= 0) {
is.ie = is.ns = false;
is.opera = true;
}
if (is.ua.indexOf('gecko') >= 0) {
is.ie = is.ns = false;
is.gecko = true;
}
// --></script>
<script type="text/javascript">
//<![CDATA[
var i = 0;
while (++i < 10)
{
// ...
}
//]]>
</script>
<script type="text/javascript">
/* <![CDATA[ */ i = 1; /* ]]> */
</script>
<script type="text/javascript">
(i < 1); /* CDATA needed */
</script>
<!--[if IE 6]>
<style type="text/css">
/*! copyright: you'll need CDATA for this < & */
body {background:white;}
</style>
<![endif]-->
<style type="text/css" title="currentStyle" media="screen">
@import "/001/001.css";
/*\*/ css hack {} /* */
/* normal CSS comment */
/*/*/ css hack {} /* */
css hack {
display/**/:/**/none;
display:none;
}
</style>
<link
rel="Shortcut Icon"
type="image/x-icon"
href="http://www.csszengarden.com/favicon.ico" />
<link
rel="alternate"
type="application/rss+xml"
title="RSS"
href="http://www.csszengarden.com/zengarden.xml" />
</head>
<body id="css-zen-garden">
<!--[if !IE]>--><p>Browser != IE</p><!--<![endif]-->
<div id="container">
<div id="pageHeader">
<h1><span>css Zen Garden</span></h1>
<h2><span>The Beauty of <acronym title="Cascading Style Sheets">CSS</acronym>
Design</span></h2>
</div>
<pre>
White space is important here!
</pre>
<div id="quickSummary">
<p class="p1"><span>A demonstration of what can be accomplished visually through <acronym title="Cascading Style Sheets">CSS</acronym>-based design. Select any style sheet from the list to load it into this page.</span></p>
<p class="p2"><span>Download the sample <a href="/zengarden-sample.html" title="This page's source HTML code, not to be modified.">html file</a> and <a href="/zengarden-sample.css" title="This page's sample CSS, the file you may modify.">css file</a></span></p>
</div>
<textarea name="comment" id="comment" rows="6" class="maxwidth" cols="80">66666
1234567890</textarea>
</div>
</body>
</html>

View File

@ -1,36 +0,0 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html
xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" ><head><meta
http-equiv="content-type" content="text/html; charset=iso-8859-1" /><meta
name="author" content="Dave Shea" /><meta
name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display" /><meta
name="description" content="A demonstration of what can be accomplished visually through CSS-based design." /><meta
name="robots" content="all" /><title>css Zen Garden: The Beauty in CSS Design</title> <script type="text/javascript">var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}</script> <script type="text/javascript">/*<![CDATA[*/var i=0;while(++i<10)
{}/*]]>*/</script> <script type="text/javascript">i=1;</script> <script type="text/javascript">/*<![CDATA[*/(i<1);/*]]>*/</script> <!--[if IE 6]><style type="text/css">/*<![CDATA[*/
/* copyright: you'll need CDATA for this < & */
body{background:white}/*]]>*/</style><![endif]--><style type="text/css" title="currentStyle" media="screen">@import "/001/001.css";/*\*/css
hack{}/**/ /*/*/css
hack{}/**/css
hack{display/**/:/**/none;display:none}</style><link
rel="Shortcut Icon"
type="image/x-icon"
href="http://www.csszengarden.com/favicon.ico" /><link
rel="alternate"
type="application/rss+xml"
title="RSS"
href="http://www.csszengarden.com/zengarden.xml" /></head><body
id="css-zen-garden"> <!--[if !IE]>--><p>Browser != IE</p><!--<![endif]--><div
id="container"><div
id="pageHeader"><h1><span>css Zen Garden</span></h1><h2><span>The Beauty of <acronym
title="Cascading Style Sheets">CSS</acronym> Design</span></h2></div><pre>
White space is important here!
</pre><div
id="quickSummary"><p
class="p1"><span>A demonstration of what can be accomplished visually through <acronym
title="Cascading Style Sheets">CSS</acronym>-based design. Select any style sheet from the list to load it into this page.</span></p><p
class="p2"><span>Download the sample <a
href="/zengarden-sample.html" title="This page's source HTML code, not to be modified.">html file</a> and <a
href="/zengarden-sample.css" title="This page's sample CSS, the file you may modify.">css file</a></span></p></div><textarea name="comment" id="comment" rows="6" class="maxwidth" cols="80">66666
1234567890</textarea></div></body></html>

View File

@ -1,95 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="en">
<head>
<!-- comments get removed -->
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta name="author" content="Dave Shea">
<!-- also whitespace around block or undisplayed elements -->
<meta name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display">
<meta name="description" content="A demonstration of what can be accomplished visually through CSS-based design.">
<meta name="robots" content="all">
<title>css Zen Garden: The Beauty in CSS Design</title>
<!-- to correct the unsightly Flash of Unstyled Content. http://www.bluerobot.com/web/css/fouc.asp -->
<script type="text/javascript"><!--
// js comment inside SCRIPT element
var is = {
ie: navigator.appName == 'Microsoft Internet Explorer',
java: navigator.javaEnabled(),
ns: navigator.appName == 'Netscape',
ua: navigator.userAgent.toLowerCase(),
version: parseFloat(navigator.appVersion.substr(21)) ||
parseFloat(navigator.appVersion),
win: navigator.platform == 'Win32'
}
is.mac = is.ua.indexOf('mac') >= 0;
if (is.ua.indexOf('opera') >= 0) {
is.ie = is.ns = false;
is.opera = true;
}
if (is.ua.indexOf('gecko') >= 0) {
is.ie = is.ns = false;
is.gecko = true;
}
// --></script>
<script type="text/javascript">
var i = 0;
while (++i < 10)
{
// ...
}
</script>
<script type="text/javascript">
i = 1;
</script>
<script type="text/javascript">
(i < 1);
</script>
<!--[if IE 6]>
<style type="text/css">
/*! copyright: you'll need CDATA for this < & */
body {background:white;}
</style>
<![endif]-->
<style type="text/css" title="currentStyle" media="screen">
@import "/001/001.css";
/*\*/ css hack {} /* */
/* normal CSS comment */
/*/*/ css hack {} /* */
css hack {
display/**/:/**/none;
display:none;
}
</style>
<link
rel="Shortcut Icon"
type="image/x-icon"
href="http://www.csszengarden.com/favicon.ico">
<link
rel="alternate"
type="application/rss+xml"
title="RSS"
href="http://www.csszengarden.com/zengarden.xml">
</head>
<body id="css-zen-garden">
<!--[if !IE]>--><p>Browser != IE</p><!--<![endif]-->
<div id="container">
<div id="pageHeader">
<h1><span>css Zen Garden</span></h1>
<h2><span>The Beauty of <acronym title="Cascading Style Sheets">CSS</acronym>
Design</span></h2>
</div>
<pre>
White space is important here!
</pre>
<div id="quickSummary">
<p class="p1"><span>A demonstration of what can be accomplished visually through <acronym title="Cascading Style Sheets">CSS</acronym>-based design. Select any style sheet from the list to load it into this page.</span></p>
<p class="p2"><span>Download the sample <a href="/zengarden-sample.html" title="This page's source HTML code, not to be modified.">html file</a> and <a href="/zengarden-sample.css" title="This page's sample CSS, the file you may modify.">css file</a></span></p>
</div>
<textarea name="comment" id="comment" rows="6" class="maxwidth" cols="80">66666
1234567890</textarea>
Preserve at least 1 char of whitespace near <script type="text/javascript"></script>scripts in case of document.write().
</div>
</body>
</html>

View File

@ -1,36 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html
lang="en"><head><meta
http-equiv="content-type" content="text/html; charset=iso-8859-1"><meta
name="author" content="Dave Shea"><meta
name="keywords" content="design, css, cascading, style, sheets, xhtml, graphic design, w3c, web standards, visual, display"><meta
name="description" content="A demonstration of what can be accomplished visually through CSS-based design."><meta
name="robots" content="all"><title>css Zen Garden: The Beauty in CSS Design</title> <script type="text/javascript">var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}</script> <script type="text/javascript">var i=0;while(++i<10)
{}</script> <script type="text/javascript">i=1;</script> <script type="text/javascript">(i<1);</script> <!--[if IE 6]><style type="text/css">
/* copyright: you'll need CDATA for this < & */
body{background:white}</style><![endif]--><style type="text/css" title="currentStyle" media="screen">@import "/001/001.css";/*\*/css
hack{}/**/ /*/*/css
hack{}/**/css
hack{display/**/:/**/none;display:none}</style><link
rel="Shortcut Icon"
type="image/x-icon"
href="http://www.csszengarden.com/favicon.ico"><link
rel="alternate"
type="application/rss+xml"
title="RSS"
href="http://www.csszengarden.com/zengarden.xml"></head><body
id="css-zen-garden"> <!--[if !IE]>--><p>Browser != IE</p><!--<![endif]--><div
id="container"><div
id="pageHeader"><h1><span>css Zen Garden</span></h1><h2><span>The Beauty of <acronym
title="Cascading Style Sheets">CSS</acronym> Design</span></h2></div><pre>
White space is important here!
</pre><div
id="quickSummary"><p
class="p1"><span>A demonstration of what can be accomplished visually through <acronym
title="Cascading Style Sheets">CSS</acronym>-based design. Select any style sheet from the list to load it into this page.</span></p><p
class="p2"><span>Download the sample <a
href="/zengarden-sample.html" title="This page's source HTML code, not to be modified.">html file</a> and <a
href="/zengarden-sample.css" title="This page's sample CSS, the file you may modify.">css file</a></span></p></div><textarea name="comment" id="comment" rows="6" class="maxwidth" cols="80">66666
1234567890</textarea>Preserve at least 1 char of whitespace near <script type="text/javascript"></script>scripts in case of document.write().</div></body></html>

View File

@ -1,3 +0,0 @@
/* @import url('bad.css' ) bad; */
adjacent2 foo { background: red url(/red.gif); }
adjacent2 bar { background: url('../green.gif') }

View File

@ -1,4 +0,0 @@
@import url( adjacent.css ) all;
@import '../input.css';
tv foo { background: red url(/red.gif); }
tv bar { background: url('../green.gif') }

View File

@ -1,4 +0,0 @@
@import url(../css/styles.css);
@import url(http://example.com/hello.css);
adjacent foo { background: red url(/red.gif); }
adjacent bar { background: url('../green.gif') }

View File

@ -1,4 +0,0 @@
@import url( adjacent.css ) screen;
@import "1/tv.css" tv, projection;
input foo { background: red url(/red.gif); }
input bar { background: url('../green.gif') }

View File

@ -1,48 +0,0 @@
@media screen {
/* some CSS to try to exercise things in general */
@import url(/more.css);
body, td, th {
font-family: Verdana , "Bitstream Vera Sans" , sans-serif ;
font-size : 12px;
}
.nav {
margin-left: 20%;
}
#main-nav {
background-color: red;
border: 1px solid #00ff77;
}
div#content
h1 + p {
padding-top: 0;
margin-top: 0;
}
@media all and (min-width: 640px) {
#media-queries-1 { background-color: #0f0; }
}
@media screen and (max-width: 2000px) {
#media-queries-2 { background-color: #0f0; }
}
@import url(http://example.com/hello.css);
adjacent foo { background: red url(/red.gif); }
adjacent bar { background: url('%TEST_FILES_URI%/green.gif') }
}
@media tv,projection {
/* @import url('%TEST_FILES_URI%/importProcessor/1/bad.css') bad; */
adjacent2 foo { background: red url(/red.gif); }
adjacent2 bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') }
@import '../input.css';
tv foo { background: red url(/red.gif); }
tv bar { background: url('%TEST_FILES_URI%/importProcessor/green.gif') }
}
input foo { background: red url(/red.gif); }
input bar { background: url('%TEST_FILES_URI%/green.gif') }

View File

@ -1,57 +0,0 @@
/*! is.js
(c) 2001 Douglas Crockford
2001 June 3
*/
// is
// The -is- object is used to identify the browser. Every browser edition
// identifies itself, but there is no standard way of doing it, and some of
// the identification is deceptive. This is because the authors of web
// browsers are liars. For example, Microsoft's IE browsers claim to be
// Mozilla 4. Netscape 6 claims to be version 5.
var is = {
ie: navigator.appName == 'Microsoft Internet Explorer',
java: navigator.javaEnabled(),
ns: navigator.appName == 'Netscape',
ua: navigator.userAgent.toLowerCase(),
version: parseFloat(navigator.appVersion.substr(21)) ||
parseFloat(navigator.appVersion),
win: navigator.platform == 'Win32'
}
/*!*
* preserve this comment, too
*/
is.mac = is.ua.indexOf('mac') >= 0;
if (is.ua.indexOf('opera') >= 0) {
is.ie = is.ns = false;
is.opera = true;
}
if (is.ua.indexOf('gecko') >= 0) {
is.ie = is.ns = false;
is.gecko = true;
}
/*@cc_on
/*@if (@_win32)
if (is.ie && is.win)
document.write("PASS: IE/win honored conditional comment.<br>");
@else @*/
if (is.ie && is.win)
document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");
else
document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");
/*@end
@*/
var recognizesCondComm = true;
//@cc_on/*
recognizesCondComm = false;
//@cc_on*/
if ((is.ie && is.win) == recognizesCondComm)
document.write("PASS: IE/win honored single-line conditional comment.<br>");
else
document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");

View File

@ -1,22 +0,0 @@
/* is.js
(c) 2001 Douglas Crockford
2001 June 3
*/
var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
/**
* preserve this comment, too
*/
is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on
/*@if (@_win32)
if (is.ie && is.win)
document.write("PASS: IE/win honored conditional comment.<br>");
@else @*/if(is.ie&&is.win)
document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");else
document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");/*@end
@*/var recognizesCondComm=true;//@cc_on/*
recognizesCondComm=false;//@cc_on*/
if((is.ie&&is.win)==recognizesCondComm)
document.write("PASS: IE/win honored single-line conditional comment.<br>");else
document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");

View File

@ -1,22 +0,0 @@
/* is.js
(c) 2001 Douglas Crockford
2001 June 3
*/
var is={ie:navigator.appName=='Microsoft Internet Explorer',java:navigator.javaEnabled(),ns:navigator.appName=='Netscape',ua:navigator.userAgent.toLowerCase(),version:parseFloat(navigator.appVersion.substr(21))||parseFloat(navigator.appVersion),win:navigator.platform=='Win32'}
/**
* preserve this comment, too
*/
is.mac=is.ua.indexOf('mac')>=0;if(is.ua.indexOf('opera')>=0){is.ie=is.ns=false;is.opera=true;}
if(is.ua.indexOf('gecko')>=0){is.ie=is.ns=false;is.gecko=true;}/*@cc_on
/*@if (@_win32)
if (is.ie && is.win)
document.write("PASS: IE/win honored conditional comment.<br>");
@else @*/if(is.ie&&is.win)
document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");else
document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");/*@end
@*/var recognizesCondComm=true;//@cc_on/*
recognizesCondComm=false;//@cc_on*/
if((is.ie&&is.win)==recognizesCondComm)
document.write("PASS: IE/win honored single-line conditional comment.<br>");else
document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");

View File

@ -1,14 +0,0 @@
var isWin;
/*@cc_on
@if (@_win32)
isWin = true;
@else @*/ isWin = false;
/*@end
@*/
isWin = /*@cc_on!*/!1;
var recognizesCondComm = true;
//@cc_on/*
recognizesCondComm = false;
//@cc_on*/

View File

@ -1,13 +0,0 @@
var isWin;
/*@cc_on
@if (@_win32)
isWin = true;
@else @*/
isWin = false;
/*@end
@*/
var recognizesCondComm = true;
//@cc_on/*
recognizesCondComm = false;
//@cc_on*/

View File

@ -1,4 +0,0 @@
function testIssue74() {
return /'/;
}

View File

@ -1 +0,0 @@
function testIssue74(){return /'/;}

View File

@ -1 +0,0 @@
function testIssue74(){return /'/}

File diff suppressed because it is too large Load Diff

View File

@ -1,168 +0,0 @@
var MrClay = window.MrClay || {};
/**
* Simplified access to/manipulation of the query string
*
* Based on: http://adamv.com/dev/javascript/files/querystring.js
* Design pattern: http://www.litotes.demon.co.uk/js_info/private_static.html#wConst
*/
MrClay.QueryString = function(){
/**
* @static
* @private
*/
var parse = function(str) {
var assignments = str.split('&')
,obj = {}
,propValue;
for (var i = 0, l = assignments.length; i < l; ++i) {
propValue = assignments[i].split('=');
if (propValue.length > 2
|| -1 != propValue[0].indexOf('+')
|| propValue[0] == ''
) {
continue;
}
if (propValue.length == 1) {
propValue[1] = propValue[0];
}
obj[unescape(propValue[0])] = unescape(propValue[1].replace(/\+/g, ' '));
}
return obj;
};
/**
* Constructor (MrClay.QueryString becomes this)
*
* @param mixed A window object, a query string, or empty (default current window)
*/
function construct_(spec) {
spec = spec || window;
if (typeof spec == 'object') {
// get querystring from window
this.window = spec;
spec = spec.location.search.substr(1);
} else {
this.window = window;
}
this.vars = parse(spec);
}
/**
* Reload the window
*
* @static
* @public
* @param object vars Specify querystring vars only if you wish to replace them
* @param object window_ window to be reloaded (current window by default)
*/
construct_.reload = function(vars, window_) {
window_ = window_ || window;
vars = vars || (new MrClay.QueryString(window_)).vars;
var l = window_.location
,currUrl = l.href
,s = MrClay.QueryString.toString(vars)
,newUrl = l.protocol + '//' + l.hostname + l.pathname
+ (s ? '?' + s : '') + l.hash;
if (currUrl == newUrl) {
l.reload();
} else {
l.assign(newUrl);
}
};
/**
* Get the value of a querystring var
*
* @static
* @public
* @param string key
* @param mixed default_ value to return if key not found
* @param object window_ window to check (current window by default)
* @return mixed
*/
construct_.get = function(key, default_, window_) {
window_ = window_ || window;
return (new MrClay.QueryString(window_)).get(key, default_);
};
/**
* Reload the page setting one or multiple querystring vars
*
* @static
* @public
* @param mixed key object of query vars/values, or a string key for a single
* assignment
* @param mixed null for multiple settings, the value to assign for single
* @param object window_ window to reload (current window by default)
*/
construct_.set = function(key, value, window_) {
window_ = window_ || window;
(new MrClay.QueryString(window_)).set(key, value).reload();
};
/**
* Convert an object of query vars/values to a querystring
*
* @static
* @public
* @param object query vars/values
* @return string
*/
construct_.toString = function(vars) {
var pieces = [];
for (var prop in vars) {
pieces.push(escape(prop) + '=' + escape(vars[prop]));
}
return pieces.join('&');
};
/**
* @public
*/
construct_.prototype.reload = function() {
MrClay.QueryString.reload(this.vars, this.window);
return this;
};
/**
* @public
*/
construct_.prototype.get = function(key, default_) {
if (typeof default_ == 'undefined') {
default_ = null;
}
return (this.vars[key] == null)
? default_
: this.vars[key];
};
/**
* @public
*/
construct_.prototype.set = function(key, value) {
var obj = {};
if (typeof key == 'string') {
obj[key] = value;
} else {
obj = key;
}
for (var prop in obj) {
if (obj[prop] == null) {
delete this.vars[prop];
} else {
this.vars[prop] = obj[prop];
}
}
return this;
};
/**
* @public
*/
construct_.prototype.toString = function() {
return QueryString.toString(this.vars);
};
return construct_;
}(); // define and execute

View File

@ -1,24 +0,0 @@
// http://mrclay.org/
(function(){
var
reMailto = /^mailto:my_name_is_(\S+)_and_the_domain_is_(\S+)$/,
reRemoveTitleIf = /^my name is/,
oo = window.onload,
fixHrefs = function() {
var i = 0, l, m;
while (l = document.links[i++]) {
// require phrase in href property
if (m = l.href.match(reMailto)) {
l.href = 'mailto:' + m[1] + '@' + m[2];
if (reRemoveTitleIf.test(l.title)) {
l.title = '';
}
}
}
};
// end var
window.onload = function() {
oo && oo();
fixHrefs();
};
})();

View File

@ -1,7 +0,0 @@
/* this { is a } comment */
@import "/1.css";
selector {
property: value;
}

View File

@ -1,7 +0,0 @@
/* this { is a } comment */
@import "/2.css";
selector2 {
property: value;
}

View File

@ -1 +0,0 @@
@import "/1.css";@import "/2.css";selector{property:value}selector2{property:value}

View File

@ -1,2 +0,0 @@
var triggerBug = {_default: "*/*"};
var essentialFunctionality = true;

View File

@ -1,280 +0,0 @@
/* email.js */
/* 1 */ // http://mrclay.org/
/* 2 */ (function(){
/* 3 */ var
/* 4 */ reMailto = /^mailto:my_name_is_(\S+)_and_the_domain_is_(\S+)$/,
/* 5 */ reRemoveTitleIf = /^my name is/,
/* 6 */ oo = window.onload,
/* 7 */ fixHrefs = function() {
/* 8 */ var i = 0, l, m;
/* 9 */ while (l = document.links[i++]) {
/* 10 */ // require phrase in href property
/* 11 */ if (m = l.href.match(reMailto)) {
/* 12 */ l.href = 'mailto:' + m[1] + '@' + m[2];
/* 13 */ if (reRemoveTitleIf.test(l.title)) {
/* 14 */ l.title = '';
/* 15 */ }
/* 16 */ }
/* 17 */ }
/* 18 */ };
/* 19 */ // end var
/* 20 */ window.onload = function() {
/* 21 */ oo && oo();
/* 22 */ fixHrefs();
/* 23 */ };
/* 24 */ })();
;
/* lines_bugs.js */
/* 1 */ var triggerBug = {_default: "*/*"};
/* 2 */ var essentialFunctionality = true;
/* 3 */
;
/* QueryString.js */
/* 1 */ var MrClay = window.MrClay || {};
/* 2 */
/* 3 */ /**
/* 4 *| * Simplified access to/manipulation of the query string
/* 5 *| *
/* 6 *| * Based on: http://adamv.com/dev/javascript/files/querystring.js
/* 7 *| * Design pattern: http://www.litotes.demon.co.uk/js_info/private_static.html#wConst
/* 8 *| */
/* 9 */ MrClay.QueryString = function(){
/* 10 */ /**
/* 11 *| * @static
/* 12 *| * @private
/* 13 *| */
/* 14 */ var parse = function(str) {
/* 15 */ var assignments = str.split('&')
/* 16 */ ,obj = {}
/* 17 */ ,propValue;
/* 18 */ for (var i = 0, l = assignments.length; i < l; ++i) {
/* 19 */ propValue = assignments[i].split('=');
/* 20 */ if (propValue.length > 2
/* 21 */ || -1 != propValue[0].indexOf('+')
/* 22 */ || propValue[0] == ''
/* 23 */ ) {
/* 24 */ continue;
/* 25 */ }
/* 26 */ if (propValue.length == 1) {
/* 27 */ propValue[1] = propValue[0];
/* 28 */ }
/* 29 */ obj[unescape(propValue[0])] = unescape(propValue[1].replace(/\+/g, ' '));
/* 30 */ }
/* 31 */ return obj;
/* 32 */ };
/* 33 */
/* 34 */ /**
/* 35 *| * Constructor (MrClay.QueryString becomes this)
/* 36 *| *
/* 37 *| * @param mixed A window object, a query string, or empty (default current window)
/* 38 *| */
/* 39 */ function construct_(spec) {
/* 40 */ spec = spec || window;
/* 41 */ if (typeof spec == 'object') {
/* 42 */ // get querystring from window
/* 43 */ this.window = spec;
/* 44 */ spec = spec.location.search.substr(1);
/* 45 */ } else {
/* 46 */ this.window = window;
/* 47 */ }
/* 48 */ this.vars = parse(spec);
/* 49 */ }
/* 50 */
/* QueryString.js */
/* 51 */ /**
/* 52 *| * Reload the window
/* 53 *| *
/* 54 *| * @static
/* 55 *| * @public
/* 56 *| * @param object vars Specify querystring vars only if you wish to replace them
/* 57 *| * @param object window_ window to be reloaded (current window by default)
/* 58 *| */
/* 59 */ construct_.reload = function(vars, window_) {
/* 60 */ window_ = window_ || window;
/* 61 */ vars = vars || (new MrClay.QueryString(window_)).vars;
/* 62 */ var l = window_.location
/* 63 */ ,currUrl = l.href
/* 64 */ ,s = MrClay.QueryString.toString(vars)
/* 65 */ ,newUrl = l.protocol + '//' + l.hostname + l.pathname
/* 66 */ + (s ? '?' + s : '') + l.hash;
/* 67 */ if (currUrl == newUrl) {
/* 68 */ l.reload();
/* 69 */ } else {
/* 70 */ l.assign(newUrl);
/* 71 */ }
/* 72 */ };
/* 73 */
/* 74 */ /**
/* 75 *| * Get the value of a querystring var
/* 76 *| *
/* 77 *| * @static
/* 78 *| * @public
/* 79 *| * @param string key
/* 80 *| * @param mixed default_ value to return if key not found
/* 81 *| * @param object window_ window to check (current window by default)
/* 82 *| * @return mixed
/* 83 *| */
/* 84 */ construct_.get = function(key, default_, window_) {
/* 85 */ window_ = window_ || window;
/* 86 */ return (new MrClay.QueryString(window_)).get(key, default_);
/* 87 */ };
/* 88 */
/* 89 */ /**
/* 90 *| * Reload the page setting one or multiple querystring vars
/* 91 *| *
/* 92 *| * @static
/* 93 *| * @public
/* 94 *| * @param mixed key object of query vars/values, or a string key for a single
/* 95 *| * assignment
/* 96 *| * @param mixed null for multiple settings, the value to assign for single
/* 97 *| * @param object window_ window to reload (current window by default)
/* 98 *| */
/* 99 */ construct_.set = function(key, value, window_) {
/* 100 */ window_ = window_ || window;
/* QueryString.js */
/* 101 */ (new MrClay.QueryString(window_)).set(key, value).reload();
/* 102 */ };
/* 103 */
/* 104 */ /**
/* 105 *| * Convert an object of query vars/values to a querystring
/* 106 *| *
/* 107 *| * @static
/* 108 *| * @public
/* 109 *| * @param object query vars/values
/* 110 *| * @return string
/* 111 *| */
/* 112 */ construct_.toString = function(vars) {
/* 113 */ var pieces = [];
/* 114 */ for (var prop in vars) {
/* 115 */ pieces.push(escape(prop) + '=' + escape(vars[prop]));
/* 116 */ }
/* 117 */ return pieces.join('&');
/* 118 */ };
/* 119 */
/* 120 */ /**
/* 121 *| * @public
/* 122 *| */
/* 123 */ construct_.prototype.reload = function() {
/* 124 */ MrClay.QueryString.reload(this.vars, this.window);
/* 125 */ return this;
/* 126 */ };
/* 127 */
/* 128 */ /**
/* 129 *| * @public
/* 130 *| */
/* 131 */ construct_.prototype.get = function(key, default_) {
/* 132 */ if (typeof default_ == 'undefined') {
/* 133 */ default_ = null;
/* 134 */ }
/* 135 */ return (this.vars[key] == null)
/* 136 */ ? default_
/* 137 */ : this.vars[key];
/* 138 */ };
/* 139 */
/* 140 */ /**
/* 141 *| * @public
/* 142 *| */
/* 143 */ construct_.prototype.set = function(key, value) {
/* 144 */ var obj = {};
/* 145 */ if (typeof key == 'string') {
/* 146 */ obj[key] = value;
/* 147 */ } else {
/* 148 */ obj = key;
/* 149 */ }
/* 150 */ for (var prop in obj) {
/* QueryString.js */
/* 151 */ if (obj[prop] == null) {
/* 152 */ delete this.vars[prop];
/* 153 */ } else {
/* 154 */ this.vars[prop] = obj[prop];
/* 155 */ }
/* 156 */ }
/* 157 */ return this;
/* 158 */ };
/* 159 */
/* 160 */ /**
/* 161 *| * @public
/* 162 *| */
/* 163 */ construct_.prototype.toString = function() {
/* 164 */ return QueryString.toString(this.vars);
/* 165 */ };
/* 166 */
/* 167 */ return construct_;
/* 168 */ }(); // define and execute
;
/* before.js */
/* 1 */ /*! is.js
/* 2 *|
/* 3 *| (c) 2001 Douglas Crockford
/* 4 *| 2001 June 3
/* 5 *| */
/* 6 */
/* 7 */ // is
/* 8 */
/* 9 */ // The -is- object is used to identify the browser. Every browser edition
/* 10 */ // identifies itself, but there is no standard way of doing it, and some of
/* 11 */ // the identification is deceptive. This is because the authors of web
/* 12 */ // browsers are liars. For example, Microsoft's IE browsers claim to be
/* 13 */ // Mozilla 4. Netscape 6 claims to be version 5.
/* 14 */
/* 15 */ var is = {
/* 16 */ ie: navigator.appName == 'Microsoft Internet Explorer',
/* 17 */ java: navigator.javaEnabled(),
/* 18 */ ns: navigator.appName == 'Netscape',
/* 19 */ ua: navigator.userAgent.toLowerCase(),
/* 20 */ version: parseFloat(navigator.appVersion.substr(21)) ||
/* 21 */ parseFloat(navigator.appVersion),
/* 22 */ win: navigator.platform == 'Win32'
/* 23 */ }
/* 24 */ /*!*
/* 25 *| * preserve this comment, too
/* 26 *| */
/* 27 */ is.mac = is.ua.indexOf('mac') >= 0;
/* 28 */ if (is.ua.indexOf('opera') >= 0) {
/* 29 */ is.ie = is.ns = false;
/* 30 */ is.opera = true;
/* 31 */ }
/* 32 */ if (is.ua.indexOf('gecko') >= 0) {
/* 33 */ is.ie = is.ns = false;
/* 34 */ is.gecko = true;
/* 35 */ }
/* 36 */
/* 37 */ /*@cc_on
/* 38 *| /*@if (@_win32)
/* 39 *| if (is.ie && is.win)
/* 40 *| document.write("PASS: IE/win honored conditional comment.<br>");
/* 41 *| @else @*/
/* 42 */ if (is.ie && is.win)
/* 43 */ document.write("FAIL: IE/win did not honor multi-line conditional comment.<br>");
/* 44 */ else
/* 45 */ document.write("PASS: Non-IE/win browser ignores multi-line conditional comment.<br>");
/* 46 */ /*@end
/* 47 *| @*/
/* 48 */
/* 49 */ var recognizesCondComm = true;
/* 50 */ //@cc_on/*
/* before.js */
/* 51 *| recognizesCondComm = false;
/* 52 *| //@cc_on*/
/* 53 */
/* 54 */ if ((is.ie && is.win) == recognizesCondComm)
/* 55 */ document.write("PASS: IE/win honored single-line conditional comment.<br>");
/* 56 */ else
/* 57 */ document.write("FAIL: Non-IE/win browser did not ignore single-line conditional comment.<br>");
/* 58 */

View File

@ -1,5 +0,0 @@
@import url(/more.css);body,td,th{font-family:Verdana,"Bitstream Vera Sans",sans-serif;font-size:12px}.nav{margin-left:20%}#main-nav{background-color:red;border:1px
solid #0f7}div#content
h1+p{padding-top:0;margin-top:0}@media all and (min-width: 640px){#media-queries-1{background-color:#0f0}}@media screen and (max-width: 2000px){#media-queries-2{background-color:#0f0}}
/* YUI Compressor style comments are preserved */
body{background:#fff url(/path/to/image.gif) repeat-y}

View File

@ -1,12 +0,0 @@
(function(){var
reMailto=/^mailto:my_name_is_(\S+)_and_the_domain_is_(\S+)$/,reRemoveTitleIf=/^my name is/,oo=window.onload,fixHrefs=function(){var i=0,l,m;while(l=document.links[i++]){if(m=l.href.match(reMailto)){l.href='mailto:'+m[1]+'@'+m[2];if(reRemoveTitleIf.test(l.title)){l.title='';}}}};window.onload=function(){oo&&oo();fixHrefs();};})();;var MrClay=window.MrClay||{};MrClay.QueryString=function(){var parse=function(str){var assignments=str.split('&'),obj={},propValue;for(var i=0,l=assignments.length;i<l;++i){propValue=assignments[i].split('=');if(propValue.length>2||-1!=propValue[0].indexOf('+')||propValue[0]==''){continue;}
if(propValue.length==1){propValue[1]=propValue[0];}
obj[unescape(propValue[0])]=unescape(propValue[1].replace(/\+/g,' '));}
return obj;};function construct_(spec){spec=spec||window;if(typeof spec=='object'){this.window=spec;spec=spec.location.search.substr(1);}else{this.window=window;}
this.vars=parse(spec);}
construct_.reload=function(vars,window_){window_=window_||window;vars=vars||(new MrClay.QueryString(window_)).vars;var l=window_.location,currUrl=l.href,s=MrClay.QueryString.toString(vars),newUrl=l.protocol+'//'+l.hostname+l.pathname
+(s?'?'+s:'')+l.hash;if(currUrl==newUrl){l.reload();}else{l.assign(newUrl);}};construct_.get=function(key,default_,window_){window_=window_||window;return(new MrClay.QueryString(window_)).get(key,default_);};construct_.set=function(key,value,window_){window_=window_||window;(new MrClay.QueryString(window_)).set(key,value).reload();};construct_.toString=function(vars){var pieces=[];for(var prop in vars){pieces.push(escape(prop)+'='+escape(vars[prop]));}
return pieces.join('&');};construct_.prototype.reload=function(){MrClay.QueryString.reload(this.vars,this.window);return this;};construct_.prototype.get=function(key,default_){if(typeof default_=='undefined'){default_=null;}
return(this.vars[key]==null)?default_:this.vars[key];};construct_.prototype.set=function(key,value){var obj={};if(typeof key=='string'){obj[key]=value;}else{obj=key;}
for(var prop in obj){if(obj[prop]==null){delete this.vars[prop];}else{this.vars[prop]=obj[prop];}}
return this;};construct_.prototype.toString=function(){return QueryString.toString(this.vars);};return construct_;}();

View File

@ -1,137 +0,0 @@
<?php
require_once '_inc.php';
require_once 'HTTP/ConditionalGet.php';
function test_HTTP_ConditionalGet()
{
global $thisDir;
$lmTime = time() - 900;
$gmtTime = gmdate('D, d M Y H:i:s \G\M\T', $lmTime);
$tests = array(
array(
'desc' => 'client has valid If-Modified-Since'
,'inm' => null
,'ims' => $gmtTime
,'exp' => array(
'Vary' => 'Accept-Encoding'
,'Last-Modified' => $gmtTime
,'ETag' => "\"pri{$lmTime}\""
,'Cache-Control' => 'max-age=0, private'
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
,'isValid' => true
)
)
,array(
'desc' => 'client has valid If-Modified-Since with trailing semicolon'
,'inm' => null
,'ims' => $gmtTime . ';'
,'exp' => array(
'Vary' => 'Accept-Encoding'
,'Last-Modified' => $gmtTime
,'ETag' => "\"pri{$lmTime}\""
,'Cache-Control' => 'max-age=0, private'
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
,'isValid' => true
)
)
,array(
'desc' => 'client has valid ETag (non-encoded version)'
,'inm' => "\"badEtagFoo\", \"pri{$lmTime}\""
,'ims' => null
,'exp' => array(
'Vary' => 'Accept-Encoding'
,'Last-Modified' => $gmtTime
,'ETag' => "\"pri{$lmTime}\""
,'Cache-Control' => 'max-age=0, private'
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
,'isValid' => true
)
)
,array(
'desc' => 'client has valid ETag (gzip version)'
,'inm' => "\"badEtagFoo\", \"pri{$lmTime};gz\""
,'ims' => null
,'exp' => array(
'Vary' => 'Accept-Encoding'
,'Last-Modified' => $gmtTime
,'ETag' => "\"pri{$lmTime};gz\""
,'Cache-Control' => 'max-age=0, private'
,'_responseCode' => 'HTTP/1.0 304 Not Modified'
,'isValid' => true
)
)
,array(
'desc' => 'no conditional get'
,'inm' => null
,'ims' => null
,'exp' => array(
'Vary' => 'Accept-Encoding'
,'Last-Modified' => $gmtTime
,'ETag' => "\"pri{$lmTime};gz\""
,'Cache-Control' => 'max-age=0, private'
,'isValid' => false
)
)
,array(
'desc' => 'client has invalid ETag'
,'inm' => '"pri' . ($lmTime - 300) . '"'
,'ims' => null
,'exp' => array(
'Vary' => 'Accept-Encoding'
,'Last-Modified' => $gmtTime
,'ETag' => "\"pri{$lmTime};gz\""
,'Cache-Control' => 'max-age=0, private'
,'isValid' => false
)
)
,array(
'desc' => 'client has invalid If-Modified-Since'
,'inm' => null
,'ims' => gmdate('D, d M Y H:i:s \G\M\T', $lmTime - 300)
,'exp' => array(
'Vary' => 'Accept-Encoding'
,'Last-Modified' => $gmtTime
,'ETag' => "\"pri{$lmTime};gz\""
,'Cache-Control' => 'max-age=0, private'
,'isValid' => false
)
)
);
foreach ($tests as $test) {
// setup env
if (null === $test['inm']) {
unset($_SERVER['HTTP_IF_NONE_MATCH']);
} else {
$_SERVER['HTTP_IF_NONE_MATCH'] = get_magic_quotes_gpc()
? addslashes($test['inm'])
: $test['inm'];
}
if (null === $test['ims']) {
unset($_SERVER['HTTP_IF_MODIFIED_SINCE']);
} else {
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = $test['ims'];
}
$exp = $test['exp'];
$cg = new HTTP_ConditionalGet(array(
'lastModifiedTime' => $lmTime
,'encoding' => 'x-gzip'
));
$ret = $cg->getHeaders();
$ret['isValid'] = $cg->cacheIsValid;
$passed = assertTrue($exp == $ret, 'HTTP_ConditionalGet : ' . $test['desc']);
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n--- INM = {$test['inm']} / IMS = {$test['ims']}\n";
echo "Expected = " . preg_replace('/\\s+/', ' ', var_export($exp, 1)) . "\n";
echo "Returned = " . preg_replace('/\\s+/', ' ', var_export($ret, 1)) . "\n\n";
}
}
}
test_HTTP_ConditionalGet();

View File

@ -1,260 +0,0 @@
<?php
require_once '_inc.php';
require_once 'HTTP/Encoder.php';
function test_HTTP_Encoder()
{
global $thisDir;
HTTP_Encoder::$encodeToIe6 = true;
$methodTests = array(
array(
'ua' => 'Any browser'
,'ae' => 'compress, x-gzip'
,'exp' => array('gzip', 'x-gzip')
,'desc' => 'recognize "x-gzip" as gzip'
)
,array(
'ua' => 'Any browser'
,'ae' => 'compress, x-gzip;q=0.5'
,'exp' => array('gzip', 'x-gzip')
,'desc' => 'gzip w/ non-zero q'
)
,array(
'ua' => 'Any browser'
,'ae' => 'compress, x-gzip;q=0'
,'exp' => array('compress', 'compress')
,'desc' => 'gzip w/ zero q'
)
,array(
'ua' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)'
,'ae' => 'gzip, deflate'
,'exp' => array('', '')
,'desc' => 'IE6 w/o "enhanced security"'
)
,array(
'ua' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'
,'ae' => 'gzip, deflate'
,'exp' => array('gzip', 'gzip')
,'desc' => 'IE6 w/ "enhanced security"'
)
,array(
'ua' => 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.01)'
,'ae' => 'gzip, deflate'
,'exp' => array('', '')
,'desc' => 'IE5.5'
)
,array(
'ua' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.25'
,'ae' => 'gzip,deflate'
,'exp' => array('gzip', 'gzip')
,'desc' => 'Opera identifying as IE6'
)
);
foreach ($methodTests as $test) {
$_SERVER['HTTP_USER_AGENT'] = $test['ua'];
$_SERVER['HTTP_ACCEPT_ENCODING'] = $test['ae'];
$exp = $test['exp'];
$ret = HTTP_Encoder::getAcceptedEncoding();
$passed = assertTrue($exp == $ret, 'HTTP_Encoder : ' . $test['desc']);
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n--- AE | UA = {$test['ae']} | {$test['ua']}\n";
echo "Expected = " . preg_replace('/\\s+/', ' ', var_export($exp, 1)) . "\n";
echo "Returned = " . preg_replace('/\\s+/', ' ', var_export($ret, 1)) . "\n\n";
}
}
HTTP_Encoder::$encodeToIe6 = false;
$methodTests = array(
array(
'ua' => 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)'
,'ae' => 'gzip, deflate'
,'exp' => array('', '')
,'desc' => 'IE6 w/ "enhanced security"'
)
);
foreach ($methodTests as $test) {
$_SERVER['HTTP_USER_AGENT'] = $test['ua'];
$_SERVER['HTTP_ACCEPT_ENCODING'] = $test['ae'];
$exp = $test['exp'];
$ret = HTTP_Encoder::getAcceptedEncoding();
$passed = assertTrue($exp == $ret, 'HTTP_Encoder : ' . $test['desc']);
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n--- AE | UA = {$test['ae']} | {$test['ua']}\n";
echo "Expected = " . preg_replace('/\\s+/', ' ', var_export($exp, 1)) . "\n";
echo "Returned = " . preg_replace('/\\s+/', ' ', var_export($ret, 1)) . "\n\n";
}
}
if (! function_exists('gzdeflate')) {
echo "!WARN: HTTP_Encoder : Zlib support is not present in PHP. Encoding cannot be performed/tested.\n";
return;
}
// test compression of varied content (HTML,JS, & CSS)
$variedContent = file_get_contents($thisDir . '/_test_files/html/before.html')
. file_get_contents($thisDir . '/_test_files/css/subsilver.css')
. file_get_contents($thisDir . '/_test_files/js/jquery-1.2.3.js');
$variedLength = strlen($variedContent);
$encodingTests = array(
array('method' => 'deflate', 'inv' => 'gzinflate', 'exp' => 32157)
,array('method' => 'gzip', 'inv' => '_gzdecode', 'exp' => 32175)
,array('method' => 'compress', 'inv' => 'gzuncompress', 'exp' => 32211)
);
foreach ($encodingTests as $test) {
$e = new HTTP_Encoder(array(
'content' => $variedContent
,'method' => $test['method']
));
$e->encode(9);
$ret = strlen($e->getContent());
// test uncompression
$roundTrip = @call_user_func($test['inv'], $e->getContent());
$desc = "HTTP_Encoder : {$test['method']} : uncompress possible";
$passed = assertTrue($variedContent == $roundTrip, $desc);
// test expected compressed size
$desc = "HTTP_Encoder : {$test['method']} : compressed to "
. sprintf('%4.2f%% of original', $ret/$variedLength*100);
$passed = assertTrue(abs($ret - $test['exp']) < 100, $desc);
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n--- {$test['method']}: expected bytes: "
, "{$test['exp']}. Returned: {$ret} "
, "(off by ". abs($ret - $test['exp']) . " bytes)\n\n";
}
}
$_SERVER['HTTP_ACCEPT_ENCODING'] = 'identity';
$he = new HTTP_Encoder(array(
'content' => 'Hello'
));
$he->encode();
$headers = $he->getHeaders();
assertTrue(isset($headers['Vary']), 'HTTP_Encoder : Vary always sent');
}
test_HTTP_Encoder();
function _gzdecode($data)
{
$filename = $error = '';
return _phpman_gzdecode($data, $filename, $error);
}
// http://www.php.net/manual/en/function.gzdecode.php#82930
function _phpman_gzdecode($data, &$filename='', &$error='', $maxlength=null)
{
$len = strlen($data);
if ($len < 18 || strcmp(substr($data,0,2),"\x1f\x8b")) {
$error = "Not in GZIP format.";
return null; // Not GZIP format (See RFC 1952)
}
$method = ord(substr($data,2,1)); // Compression method
$flags = ord(substr($data,3,1)); // Flags
if ($flags & 31 != $flags) {
$error = "Reserved bits not allowed.";
return null;
}
// NOTE: $mtime may be negative (PHP integer limitations)
$mtime = unpack("V", substr($data,4,4));
$mtime = $mtime[1];
$xfl = substr($data,8,1);
$os = substr($data,8,1);
$headerlen = 10;
$extralen = 0;
$extra = "";
if ($flags & 4) {
// 2-byte length prefixed EXTRA data in header
if ($len - $headerlen - 2 < 8) {
return false; // invalid
}
$extralen = unpack("v",substr($data,8,2));
$extralen = $extralen[1];
if ($len - $headerlen - 2 - $extralen < 8) {
return false; // invalid
}
$extra = substr($data,10,$extralen);
$headerlen += 2 + $extralen;
}
$filenamelen = 0;
$filename = "";
if ($flags & 8) {
// C-style string
if ($len - $headerlen - 1 < 8) {
return false; // invalid
}
$filenamelen = strpos(substr($data,$headerlen),chr(0));
if ($filenamelen === false || $len - $headerlen - $filenamelen - 1 < 8) {
return false; // invalid
}
$filename = substr($data,$headerlen,$filenamelen);
$headerlen += $filenamelen + 1;
}
$commentlen = 0;
$comment = "";
if ($flags & 16) {
// C-style string COMMENT data in header
if ($len - $headerlen - 1 < 8) {
return false; // invalid
}
$commentlen = strpos(substr($data,$headerlen),chr(0));
if ($commentlen === false || $len - $headerlen - $commentlen - 1 < 8) {
return false; // Invalid header format
}
$comment = substr($data,$headerlen,$commentlen);
$headerlen += $commentlen + 1;
}
$headercrc = "";
if ($flags & 2) {
// 2-bytes (lowest order) of CRC32 on header present
if ($len - $headerlen - 2 < 8) {
return false; // invalid
}
$calccrc = crc32(substr($data,0,$headerlen)) & 0xffff;
$headercrc = unpack("v", substr($data,$headerlen,2));
$headercrc = $headercrc[1];
if ($headercrc != $calccrc) {
$error = "Header checksum failed.";
return false; // Bad header CRC
}
$headerlen += 2;
}
// GZIP FOOTER
$datacrc = unpack("V",substr($data,-8,4));
$datacrc = sprintf('%u',$datacrc[1] & 0xFFFFFFFF);
$isize = unpack("V",substr($data,-4));
$isize = $isize[1];
// decompression:
$bodylen = $len-$headerlen-8;
if ($bodylen < 1) {
// IMPLEMENTATION BUG!
return null;
}
$body = substr($data,$headerlen,$bodylen);
$data = "";
if ($bodylen > 0) {
switch ($method) {
case 8:
// Currently the only supported compression method:
$data = gzinflate($body,$maxlength);
break;
default:
$error = "Unknown compression method.";
return false;
}
} // zero-byte body content is allowed
// Verifiy CRC32
$crc = sprintf("%u",crc32($data));
$crcOK = $crc == $datacrc;
$lenOK = $isize == strlen($data);
if (!$lenOK || !$crcOK) {
$error = ( $lenOK ? '' : 'Length check FAILED. ') . ( $crcOK ? '' : 'Checksum FAILED.');
return false;
}
return $data;
}

View File

@ -1,63 +0,0 @@
<?php
require_once '_inc.php';
require_once 'JSMin.php';
function test_JSMin()
{
global $thisDir;
$src = file_get_contents($thisDir . '/_test_files/js/before.js');
$minExpected = file_get_contents($thisDir . '/_test_files/js/before.min.js');
$minOutput = JSMin::minify($src);
$passed = assertTrue($minExpected == $minOutput, 'JSMin : Overall');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
}
$src = file_get_contents($thisDir . '/_test_files/js/issue74.js');
$minExpected = file_get_contents($thisDir . '/_test_files/js/issue74.min.js');
$minOutput = JSMin::minify($src);
$passed = assertTrue($minExpected == $minOutput, 'JSMin : Quotes in RegExp literals (Issue 74)');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
test_JSMin_exception('"Hello'
,'Unterminated String'
,'JSMin_UnterminatedStringException'
,"Unterminated String: '\"Hello'");
test_JSMin_exception("return /regexp\n}"
,'Unterminated RegExp'
,'JSMin_UnterminatedRegExpException'
,"Unterminated RegExp: '/regexp\n'");
test_JSMin_exception("/* Comment "
,'Unterminated Comment'
,'JSMin_UnterminatedCommentException'
,"Unterminated Comment: '/* Comment '");
}
}
function test_JSMin_exception($js, $label, $expClass, $expMessage) {
$eClass = $eMsg = '';
try {
JSMin::minify($js);
} catch (Exception $e) {
$eClass = get_class($e);
$eMsg = $e->getMessage();
}
$passed = assertTrue($eClass === $expClass && $eMsg === $expMessage,
'JSMin : throw on ' . $label);
if (! $passed && __FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n ---" , $e, "\n\n";
}
}
test_JSMin();

View File

@ -1,80 +0,0 @@
<?php
require_once '_inc.php';
require_once 'JSMinPlus.php';
function test_JSMinPlus()
{
global $thisDir;
$src = file_get_contents($thisDir . '/_test_files/js/condcomm.js');
$minExpected = file_get_contents($thisDir . '/_test_files/js/condcomm.min_plus.js');
$minOutput = JSMinPlus::minify($src);
$passed = assertTrue($minExpected == $minOutput, 'JSMinPlus : Conditional Comments');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
}
return;
$src = file_get_contents($thisDir . '/_test_files/js/before.js');
$minExpected = file_get_contents($thisDir . '/_test_files/js/before.min_plus.js');
$minOutput = JSMinPlus::minify($src);
$passed = assertTrue($minExpected == $minOutput, 'JSMinPlus : Overall');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
}
$src = file_get_contents($thisDir . '/_test_files/js/issue74.js');
$minExpected = file_get_contents($thisDir . '/_test_files/js/issue74.min_plus.js');
$minOutput = JSMinPlus::minify($src);
$passed = assertTrue($minExpected == $minOutput, 'JSMinPlus : Quotes in RegExp literals (Issue 74)');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
/*
test_JSMin_exception('"Hello'
,'Unterminated String'
,'JSMin_UnterminatedStringException'
,"Unterminated String: '\"Hello'");
test_JSMin_exception("return /regexp\n}"
,'Unterminated RegExp'
,'JSMin_UnterminatedRegExpException'
,"Unterminated RegExp: '/regexp\n'");
test_JSMin_exception("/* Comment "
,'Unterminated Comment'
,'JSMin_UnterminatedCommentException'
,"Unterminated Comment: '/* Comment '");
//*/
}
}
/*function test_JSMin_exception($js, $label, $expClass, $expMessage) {
$eClass = $eMsg = '';
try {
JSMin::minify($js);
} catch (Exception $e) {
$eClass = get_class($e);
$eMsg = $e->getMessage();
}
$passed = assertTrue($eClass === $expClass && $eMsg === $expMessage,
'JSMin : throw on ' . $label);
if (! $passed && __FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n ---" , $e, "\n\n";
}
}//*/
test_JSMinPlus();

View File

@ -1,213 +0,0 @@
<?php
// currently these only test serve() when passed the 'quiet' options
require_once '_inc.php';
require_once 'Minify.php';
function test_Minify()
{
global $thisDir;
$minifyTestPath = dirname(__FILE__) . '/_test_files/minify';
$thisFileActive = (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME']));
$tomorrow = $_SERVER['REQUEST_TIME'] + 86400;
$lastModified = $_SERVER['REQUEST_TIME'] - 86400;
// Test 304 response
// simulate conditional headers
$_SERVER['HTTP_IF_NONE_MATCH'] = "\"{$lastModified}pub\"";
$_SERVER['HTTP_IF_MODIFIED_SINCE'] = gmdate('D, d M Y H:i:s \G\M\T', $lastModified);
$expected = array (
'success' => true
,'statusCode' => 304
,'content' => '',
'headers' => array(
'Expires' => gmdate('D, d M Y H:i:s \G\M\T', $_SERVER['REQUEST_TIME'] + 1800),
'Vary' => 'Accept-Encoding',
'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
'ETag' => "\"pub{$lastModified}\"",
'Cache-Control' => 'max-age=1800, public',
'_responseCode' => 'HTTP/1.0 304 Not Modified',
)
);
$output = Minify::serve('Files', array(
'files' => $thisDir . '/_test_files/css/styles.css' // controller casts to array
,'quiet' => true
,'lastModifiedTime' => $lastModified
,'encodeOutput' => false
));
$passed = assertTrue($expected === $output, 'Minify : 304 response');
if ($thisFileActive) {
echo "\nOutput: " .var_export($output, 1). "\n\n";
if (! $passed) {
echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
}
}
assertTrue(
! class_exists('Minify_CSS', false)
&& ! class_exists('Minify_Cache', false)
,'Minify : cache, and minifier classes aren\'t loaded for 304s'
);
// Test minifying JS and serving with Expires header
$content = preg_replace('/\\r\\n?/', "\n", file_get_contents($minifyTestPath . '/minified.js'));
$lastModified = max(
filemtime($minifyTestPath . '/email.js')
,filemtime($minifyTestPath . '/QueryString.js')
);
$expected = array(
'success' => true
,'statusCode' => 200
// JSMin always converts to \n line endings
,'content' => $content
,'headers' => array (
'Expires' => gmdate('D, d M Y H:i:s \G\M\T', $tomorrow),
'Vary' => 'Accept-Encoding',
'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
'ETag' => "\"pub{$lastModified}\"",
'Cache-Control' => 'max-age=86400, public',
'Content-Length' => strlen($content),
'Content-Type' => 'application/x-javascript; charset=utf-8',
)
);
$output = Minify::serve('Files', array(
'files' => array(
$minifyTestPath . '/email.js'
,$minifyTestPath . '/QueryString.js'
)
,'quiet' => true
,'maxAge' => 86400
,'encodeOutput' => false
));
$passed = assertTrue($expected === $output, 'Minify : JS and Expires');
if ($thisFileActive) {
echo "\nOutput: " .var_export($output, 1). "\n\n";
if (! $passed) {
echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
}
}
// test for Issue 73
Minify::setCache(null);
$expected = ";function h(){}";
$output = Minify::serve('Files', array(
'files' => array(
$minifyTestPath . '/issue73_1.js'
,$minifyTestPath . '/issue73_2.js'
)
,'quiet' => true
,'encodeOutput' => false
));
$output = $output['content'];
$passed = assertTrue($expected === $output, 'Minify : Issue 73');
if ($thisFileActive) {
if (! $passed) {
echo "\n---Output : " .var_export($output, 1). "\n";
echo "---Expected: " .var_export($expected, 1). "\n\n";
}
}
// test for Issue 89
$expected = file_get_contents($minifyTestPath . '/issue89_out.min.css');
$output = Minify::serve('Files', array(
'files' => array(
$minifyTestPath . '/issue89_1.css'
,$minifyTestPath . '/issue89_2.css'
)
,'quiet' => true
,'encodeOutput' => false
,'bubbleCssImports' => true
));
$output = $output['content'];
$passed = assertTrue($expected === $output, 'Minify : Issue 89 : bubbleCssImports');
if ($thisFileActive) {
if (! $passed) {
echo "\n---Output : " .var_export($output, 1). "\n";
echo "---Expected: " .var_export($expected, 1). "\n\n";
}
}
$output = Minify::serve('Files', array(
'files' => array(
$minifyTestPath . '/issue89_1.css'
,$minifyTestPath . '/issue89_2.css'
)
,'quiet' => true
,'encodeOutput' => false
));
$output = $output['content'];
$passed = assertTrue(0 === strpos($output, Minify::$importWarning), 'Minify : Issue 89 : detect invalid imports');
if ($thisFileActive) {
if (! $passed) {
echo "\n---Output : " .var_export($output, 1). "\n";
echo "---Expected: " .var_export($expected, 1). "\n\n";
}
}
$output = Minify::serve('Files', array(
'files' => array(
$minifyTestPath . '/issue89_1.css'
)
,'quiet' => true
,'encodeOutput' => false
));
$output = $output['content'];
$passed = assertTrue(false === strpos($output, Minify::$importWarning), 'Minify : Issue 89 : don\'t warn about valid imports');
if ($thisFileActive) {
if (! $passed) {
echo "\n---Output : " .var_export($output, 1). "\n";
echo "---Expected: " .var_export($expected, 1). "\n\n";
}
}
// Test minifying CSS and responding with Etag/Last-Modified
Minify::setCache(null);
// don't allow conditional headers
unset($_SERVER['HTTP_IF_NONE_MATCH'], $_SERVER['HTTP_IF_MODIFIED_SINCE']);
$expectedContent = file_get_contents($minifyTestPath . '/minified.css');
$expected = array(
'success' => true
,'statusCode' => 200
,'content' => $expectedContent
,'headers' => array (
'Vary' => 'Accept-Encoding',
'Last-Modified' => gmdate('D, d M Y H:i:s \G\M\T', $lastModified),
'ETag' => "\"pub{$lastModified}\"",
'Cache-Control' => 'max-age=0, public',
'Content-Length' => strlen($expectedContent),
'Content-Type' => 'text/css; charset=utf-8',
)
);
$output = Minify::serve('Files', array(
'files' => array(
$thisDir . '/_test_files/css/styles.css'
,$thisDir . '/_test_files/css/comments.css'
)
,'quiet' => true
,'lastModifiedTime' => $lastModified
,'encodeOutput' => false
,'maxAge' => false
));
$passed = assertTrue($expected === $output, 'Minify : CSS and Etag/Last-Modified');
if ($thisFileActive) {
echo "\nOutput: " .var_export($output, 1). "\n\n";
if (! $passed) {
echo "\n\n\n\n---Expected: " .var_export($expected, 1). "\n\n";
}
}
}
test_Minify();

View File

@ -1,36 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/Build.php';
function test_Minify_Build()
{
global $thisDir;
$file1 = $thisDir . '/_test_files/css/paths_prepend.css';
$file2 = $thisDir . '/_test_files/css/styles.css';
$maxTime = max(filemtime($file1), filemtime($file2));
$b = new Minify_Build($file1);
assertTrue($b->lastModified == filemtime($file1)
,'Minify_Build : single file path');
$b = new Minify_Build(array($file1, $file2));
assertTrue($maxTime == $b->lastModified
,'Minify_Build : multiple file paths');
require_once 'Minify.php';
$b = new Minify_Build(array(
$file1
,new Minify_Source(array('filepath' => $file2))
));
assertTrue($maxTime == $b->lastModified
,'Minify_Build : file path and a Minify_Source');
assertTrue($b->uri('/path') == "/path?{$maxTime}"
,'Minify_Build : uri() with no querystring');
assertTrue($b->uri('/path?hello') == "/path?hello&amp;{$maxTime}"
,'Minify_Build : uri() with existing querystring');
}
test_Minify_Build();

View File

@ -1,53 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/CSS.php';
function test_CSS()
{
global $thisDir;
$cssPath = dirname(__FILE__) . '/_test_files/css';
// build test file list
$d = dir($cssPath);
while (false !== ($entry = $d->read())) {
if (preg_match('/^([\w\\-]+)\.css$/', $entry, $m)) {
$list[] = $m[1];
}
}
$d->close();
foreach ($list as $item) {
$options = array();
if ($item === 'paths_prepend') {
$options = array('prependRelativePath' => '../');
} elseif ($item === 'paths_rewrite') {
$options = array('currentDir' => $thisDir . '/_test_files/css');
$tempDocRoot = $_SERVER['DOCUMENT_ROOT'];
$_SERVER['DOCUMENT_ROOT'] = $thisDir;
}
$src = file_get_contents($cssPath . "/{$item}.css");
$minExpected = file_get_contents($cssPath . "/{$item}.min.css");
$minOutput = Minify_CSS::minify($src, $options);
// reset doc root as configured
if ($item === 'paths_rewrite') {
$_SERVER['DOCUMENT_ROOT'] = $tempDocRoot;
}
$passed = assertTrue($minExpected === $minOutput, 'Minify_CSS : ' . $item);
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($minOutput). " bytes\n\n{$minOutput}\n\n";
if (!$passed) {
echo "---Expected: " .strlen($minExpected). " bytes\n\n{$minExpected}\n\n";
echo "---Source: " .strlen($src). " bytes\n\n{$src}\n\n\n";
}
}
}
}
test_CSS();

View File

@ -1,56 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/CSS/UriRewriter.php';
function test_Minify_CSS_UriRewriter()
{
global $thisDir;
Minify_CSS_UriRewriter::$debugText = '';
$in = file_get_contents($thisDir . '/_test_files/css_uriRewriter/in.css');
$expected = file_get_contents($thisDir . '/_test_files/css_uriRewriter/exp.css');
$actual = Minify_CSS_UriRewriter::rewrite(
$in
,$thisDir . '/_test_files/css_uriRewriter' // currentDir
,$thisDir // use DOCUMENT_ROOT = '/full/path/to/min_unit_tests'
);
$passed = assertTrue($expected === $actual, 'Minify_CSS_UriRewriter');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Input:\n\n{$in}\n";
echo "\n---Output: " .strlen($actual). " bytes\n\n{$actual}\n\n";
if (!$passed) {
echo "---Expected: " .strlen($expected). " bytes\n\n{$expected}\n\n\n";
}
// show debugging only when test run directly
echo "--- Minify_CSS_UriRewriter::\$debugText\n\n"
, Minify_CSS_UriRewriter::$debugText;
}
Minify_CSS_UriRewriter::$debugText = '';
$in = '../../../../assets/skins/sam/sprite.png';
$exp = '/yui/assets/skins/sam/sprite.png';
$actual = Minify_CSS_UriRewriter::rewriteRelative(
$in
,'sf_root_dir\web\yui\menu\assets\skins\sam'
,'sf_root_dir\web'
);
$passed = assertTrue($exp === $actual, 'Minify_CSS_UriRewriter : Issue 99');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Input:\n\n{$in}\n";
echo "\n---Output: " .strlen($actual). " bytes\n\n{$actual}\n\n";
if (!$passed) {
echo "---Expected: " .strlen($exp). " bytes\n\n{$exp}\n\n\n";
}
// show debugging only when test run directly
echo "--- Minify_CSS_UriRewriter::\$debugText\n\n"
, Minify_CSS_UriRewriter::$debugText;
}
}
test_Minify_CSS_UriRewriter();

View File

@ -1,33 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/Cache/APC.php';
function test_Minify_Cache_APC()
{
$prefix = 'Minify_Cache_APC : ';
if (! function_exists('apc_store')) {
return;
}
$data = str_repeat(md5('testing'), 160);
$id = 'Minify_test_cache';
$cache = new Minify_Cache_APC();
assertTrue(true === $cache->store($id, $data), $prefix . 'store');
assertTrue(strlen($data) === $cache->getSize($id), $prefix . 'getSize');
assertTrue(true === $cache->isValid($id, $_SERVER['REQUEST_TIME'] - 10), $prefix . 'isValid');
ob_start();
$cache->display($id);
$displayed = ob_get_contents();
ob_end_clean();
assertTrue($data === $displayed, $prefix . 'display');
assertTrue($data === $cache->fetch($id), $prefix . 'fetch');
}
test_Minify_Cache_APC();

View File

@ -1,54 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/Cache/File.php';
function test_Minify_Cache_File()
{
global $minifyCachePath;
$data = str_repeat(md5(time()), 160);
$id = 'Minify_test_cache_noLock';
$prefix = 'Minify_Cache_File : ';
$cache = new Minify_Cache_File($minifyCachePath);
echo "NOTE: Minify_Cache_File : path is set to: '" . $cache->getPath() . "'.\n";
assertTrue(true === $cache->store($id, $data), $prefix . 'store');
assertTrue(strlen($data) === $cache->getSize($id), $prefix . 'getSize');
assertTrue(true === $cache->isValid($id, $_SERVER['REQUEST_TIME'] - 10), $prefix . 'isValid');
ob_start();
$cache->display($id);
$displayed = ob_get_contents();
ob_end_clean();
assertTrue($data === $displayed, $prefix . 'display');
assertTrue($data === $cache->fetch($id), $prefix . 'fetch');
// test with locks
$id = 'Minify_test_cache_withLock';
$cache = new Minify_Cache_File($minifyCachePath, true);
assertTrue(true === $cache->store($id, $data), $prefix . 'store w/ lock');
assertTrue(strlen($data) === $cache->getSize($id), $prefix . 'getSize');
assertTrue(true === $cache->isValid($id, $_SERVER['REQUEST_TIME'] - 10), $prefix . 'isValid');
ob_start();
$cache->display($id);
$displayed = ob_get_contents();
ob_end_clean();
assertTrue($data === $displayed, $prefix . 'display w/ lock');
assertTrue($data === $cache->fetch($id), $prefix . 'fetch w/ lock');
}
test_Minify_Cache_File();

View File

@ -1,38 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/Cache/Memcache.php';
function test_Minify_Cache_Memcache()
{
$prefix = 'Minify_Cache_Memcache : ';
if (! function_exists('memcache_set')) {
return;
}
$mc = new Memcache;
if (! @$mc->connect('localhost', 11211)) {
return;
}
$data = str_repeat(md5('testing'), 160);
$id = 'Minify_test_cache';
$cache = new Minify_Cache_Memcache($mc);
assertTrue(true === $cache->store($id, $data), $prefix . 'store');
assertTrue(strlen($data) === $cache->getSize($id), $prefix . 'getSize');
assertTrue(true === $cache->isValid($id, $_SERVER['REQUEST_TIME'] - 10), $prefix . 'isValid');
ob_start();
$cache->display($id);
$displayed = ob_get_contents();
ob_end_clean();
assertTrue($data === $displayed, $prefix . 'display');
assertTrue($data === $cache->fetch($id), $prefix . 'fetch');
}
test_Minify_Cache_Memcache();

View File

@ -1,37 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/CommentPreserver.php';
function test_Minify_CommentPreserver()
{
global $thisDir;
$inOut = array(
'/*!*/' => "\n/**/\n"
,'/*!*/a' => "\n/**/\n1A"
,'a/*!*//*!*/b' => "2A\n/**/\n\n/**/\n3B"
,'a/*!*/b/*!*/' => "4A\n/**/\n5B\n/**/\n"
);
foreach ($inOut as $in => $expected) {
$actual = Minify_CommentPreserver::process($in, '_test_MCP_processor');
$passed = assertTrue($expected === $actual, 'Minify_CommentPreserver');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($actual). " bytes\n\n{$actual}\n\n";
if (!$passed) {
echo "---Expected: " .strlen($expected). " bytes\n\n{$expected}\n\n\n";
}
}
}
}
function _test_MCP_processor($content, $options = array())
{
static $callCount = 0;
++$callCount;
return $callCount . strtoupper($content);
}
test_Minify_CommentPreserver();

View File

@ -1,59 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/HTML.php';
require_once 'Minify/CSS.php';
require_once 'JSMin.php';
function test_HTML()
{
global $thisDir;
$src = file_get_contents($thisDir . '/_test_files/html/before.html');
$minExpected = file_get_contents($thisDir . '/_test_files/html/before.min.html');
$time = microtime(true);
$minOutput = Minify_HTML::minify($src, array(
'cssMinifier' => array('Minify_CSS', 'minify')
,'jsMinifier' => array('JSMin', 'minify')
));
$time = microtime(true) - $time;
$passed = assertTrue($minExpected === $minOutput, 'Minify_HTML');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
if ($passed) {
echo "\n---Source: ", strlen($src), " bytes\n"
, "---Output: ", strlen($minOutput), " bytes (", round($time * 1000), " ms)\n\n{$minOutput}\n\n\n";
} else {
echo "\n---Output: ", strlen($minOutput), " bytes (", round($time * 1000), " ms)\n\n{$minOutput}\n\n"
, "---Expected: ", strlen($minExpected), " bytes\n\n{$minExpected}\n\n"
, "---Source: ", strlen($src), " bytes\n\n{$src}\n\n\n";
}
}
$src = file_get_contents($thisDir . '/_test_files/html/before2.html');
$minExpected = file_get_contents($thisDir . '/_test_files/html/before2.min.html');
$time = microtime(true);
$minOutput = Minify_HTML::minify($src, array(
'cssMinifier' => array('Minify_CSS', 'minify')
,'jsMinifier' => array('JSMin', 'minify')
));
$time = microtime(true) - $time;
$passed = assertTrue($minExpected === $minOutput, 'Minify_HTML');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
if ($passed) {
echo "\n---Source: ", strlen($src), " bytes\n"
, "---Output: ", strlen($minOutput), " bytes (", round($time * 1000), " ms)\n\n{$minOutput}\n\n\n";
} else {
echo "\n---Output: ", strlen($minOutput), " bytes (", round($time * 1000), " ms)\n\n{$minOutput}\n\n"
, "---Expected: ", strlen($minExpected), " bytes\n\n{$minExpected}\n\n"
, "---Source: ", strlen($src), " bytes\n\n{$src}\n\n\n";
}
}
}
test_HTML();

View File

@ -1,48 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify/ImportProcessor.php';
function test_Minify_ImportProcessor()
{
global $thisDir;
$linDir = $thisDir . '/_test_files/importProcessor';
$testFilesUri = substr(
realpath($thisDir . '/_test_files')
,strlen(realpath($_SERVER['DOCUMENT_ROOT']))
);
$testFilesUri = str_replace('\\', '/', $testFilesUri);
$expected = str_replace(
'%TEST_FILES_URI%'
,$testFilesUri
,file_get_contents($linDir . '/output.css')
);
$actual = Minify_ImportProcessor::process($linDir . '/input.css');
$passed = assertTrue($expected === $actual, 'ImportProcessor');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($actual). " bytes\n\n{$actual}\n\n";
if (!$passed) {
echo "---Expected: " .strlen($expected). " bytes\n\n{$expected}\n\n\n";
}
}
$expectedIncludes = array (
realpath($linDir . '/input.css')
,realpath($linDir . '/adjacent.css')
,realpath($linDir . '/../css/styles.css')
,realpath($linDir . '/1/tv.css')
,realpath($linDir . '/1/adjacent.css')
);
$passed = assertTrue($expectedIncludes === Minify_ImportProcessor::$filesIncluded
, 'ImportProcessor : included right files in right order');
}
test_Minify_ImportProcessor();

View File

@ -1,36 +0,0 @@
<?php
require_once '_inc.php';
require_once 'Minify.php';
function test_Lines()
{
global $thisDir;
$exp = file_get_contents("{$thisDir}/_test_files/minify/lines_output.js");
Minify::setCache(null); // no cache
$ret = Minify::serve('Files', array(
'debug' => true
,'quiet' => true
,'encodeOutput' => false
,'files' => array(
"{$thisDir}/_test_files/minify/email.js"
,"{$thisDir}/_test_files/minify/lines_bugs.js"
,"{$thisDir}/_test_files/minify/QueryString.js"
,"{$thisDir}/_test_files/js/before.js"
)
));
$passed = assertTrue($exp === $ret['content'], 'Minify_Lines');
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
echo "\n---Output: " .strlen($ret['content']). " bytes\n\n{$ret['content']}\n\n";
if (!$passed) {
echo "---Expected: " .strlen($exp). " bytes\n\n{$exp}\n\n\n";
}
}
}
test_Lines();

View File

@ -1,17 +0,0 @@
<?php
require 'test_Minify.php';
require 'test_Minify_Build.php';
require 'test_Minify_Cache_APC.php';
require 'test_Minify_Cache_File.php';
require 'test_Minify_Cache_Memcache.php';
require 'test_Minify_CSS.php';
require 'test_Minify_CSS_UriRewriter.php';
require 'test_Minify_CommentPreserver.php';
require 'test_Minify_HTML.php';
require 'test_Minify_ImportProcessor.php';
require 'test_Minify_Lines.php';
require 'test_HTTP_Encoder.php';
require 'test_HTTP_ConditionalGet.php';
require 'test_JSMin.php';
require 'test_environment.php';

View File

@ -1,100 +0,0 @@
<?php
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
// called directly
if (isset($_GET['getOutputCompression'])) {
echo (int)ini_get('zlib.output_compression');
exit();
}
if (isset($_GET['hello'])) {
// try to disable (may not work)
ini_set('zlib.output_compression', '0');
echo 'World!';
exit();
}
}
require_once '_inc.php';
function test_environment()
{
global $thisDir;
// check DOCROOT
$noSlash = assertTrue(
0 === preg_match('@[\\\\/]$@', $_SERVER['DOCUMENT_ROOT'])
,'environment : DOCUMENT_ROOT should not end in trailing slash'
);
$isRealPath = assertTrue(false !== realpath($_SERVER['DOCUMENT_ROOT'])
,'environment : DOCUMENT_ROOT should pass realpath()'
);
$containsThisFile = assertTrue(
0 === strpos(realpath(__FILE__), realpath($_SERVER['DOCUMENT_ROOT']))
,'environment : DOCUMENT_ROOT should contain this test file'
);
if (! $noSlash || ! $isRealPath || ! $containsThisFile) {
echo "\nDOCUMENT_ROOT is set to: '{$_SERVER['DOCUMENT_ROOT']}'. If you "
. "cannot modify this, consider setting \$min_documentRoot in config.php\n\n";
}
if (isset($_SERVER['SUBDOMAIN_DOCUMENT_ROOT'])) {
echo "\n!NOTE: environment : \$_SERVER['SUBDOMAIN_DOCUMENT_ROOT'] is set. "
. "You may need to set \$min_documentRoot to this in config.php\n";
}
if (realpath(__FILE__) !== realpath($_SERVER['DOCUMENT_ROOT'] . '/min_unit_tests/test_environment.php')) {
echo "!NOTE: environment : /min_unit_tests/ is not directly inside DOCUMENT_ROOT\n";
}
$thisUrl = 'http://'
. $_SERVER['HTTP_HOST'] // avoid redirects when SERVER_NAME doesn't match
. ('80' === $_SERVER['SERVER_PORT'] ? '' : ":{$_SERVER['SERVER_PORT']}")
. dirname($_SERVER['REQUEST_URI'])
. '/test_environment.php';
$oc = @file_get_contents($thisUrl . '?getOutputCompression=1');
if (false === $oc || ! preg_match('/^[01]$/', $oc)) {
echo "!WARN: environment : Local HTTP request failed. Testing cannot continue.\n";
return;
}
if ('1' === $oc) {
echo "!WARN: environment : zlib.output_compression is enabled in php.ini"
. " or .htaccess.\n";
}
$fp = fopen($thisUrl . '?hello=1', 'r', false, stream_context_create(array(
'http' => array(
'method' => "GET",
'header' => "Accept-Encoding: deflate, gzip\r\n"
)
)));
$meta = stream_get_meta_data($fp);
$passed = true;
foreach ($meta['wrapper_data'] as $i => $header) {
if ((preg_match('@^Content-Length: (\\d+)$@i', $header, $m) && $m[1] !== '6')
|| preg_match('@^Content-Encoding:@i', $header, $m)
) {
$passed = false;
break;
}
}
if ($passed && stream_get_contents($fp) !== 'World!') {
$passed = false;
}
assertTrue(
$passed
,'environment : PHP/server does not auto-HTTP-encode content'
);
fclose($fp);
if (__FILE__ === realpath($_SERVER['SCRIPT_FILENAME'])) {
if (! $passed) {
echo "\nReturned content should be 6 bytes and not HTTP encoded.\n"
. "Headers returned by: {$thisUrl}?hello=1\n\n";
var_export($meta['wrapper_data']);
}
}
}
test_environment();

View File

@ -1,4 +0,0 @@
<!DOCTYPE html>
<html><title>Test before.min.js</title></html>
<h1>Test before.min.js</h1>
<script src="_test_files/js/before.min.js" type="text/javascript"></script>