require 'test/unit' require 'datafy' class TC_Datafy < Test::Unit::TestCase def test_make_data_uri_text_plain assert_equal(SHORT_TEXT_PLAIN_URI, Datafy::make_data_uri(SHORT_STRING, TEXT_PLAIN)) assert_equal(LONG_TEXT_PLAIN_URI, Datafy::make_data_uri(LONG_STRING, TEXT_PLAIN)) end def test_make_data_uri_octet_stream assert_equal(SHORT_APPLICATION_OCTET_STREAM_URI, Datafy::make_data_uri(SHORT_STRING, APPLICATION_OCTET_STREAM)) assert_equal(LONG_APPLICATION_OCTET_STREAM_URI, Datafy::make_data_uri(LONG_STRING, APPLICATION_OCTET_STREAM)) end def test_decode_data_uri_plain assert_equal([SHORT_STRING, TEXT_PLAIN], Datafy::decode_data_uri(SHORT_TEXT_PLAIN_URI)) assert_equal([LONG_STRING, TEXT_PLAIN], Datafy::decode_data_uri(LONG_TEXT_PLAIN_URI)) end def test_decode_data_uri_octet_stream assert_equal([SHORT_STRING, APPLICATION_OCTET_STREAM], Datafy::decode_data_uri(SHORT_APPLICATION_OCTET_STREAM_URI)) assert_equal([LONG_STRING, APPLICATION_OCTET_STREAM], Datafy::decode_data_uri(LONG_APPLICATION_OCTET_STREAM_URI)) end def test_page_to_data_uri assert_equal(TEST_PAGE_ENCODED, Datafy::page_to_data_uri(TEST_PAGE_URL)) end # mime types TEXT_PLAIN = 'text/plain' APPLICATION_OCTET_STREAM = 'application/octet-stream' # string versions SHORT_STRING = 'this is some text' SHORT_BASE64 = 'dGhpcyBpcyBzb21lIHRleHQ=' SHORT_URLENCODED = 'this%20is%20some%20text' LONG_STRING = 'this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string. this is a really long string.' LONG_BASE64 = 'dGhpcyBpcyBhIHJlYWxseSBsb25nIHN0cmluZy4gdGhpcyBpcyBhIHJlYWxseSBsb25nIHN0cmluZy4gdGhpcyBpcyBhIHJlYWxseSBsb25nIHN0cmluZy4gdGhpcyBpcyBhIHJlYWxseSBsb25nIHN0cmluZy4gdGhpcyBpcyBhIHJlYWxseSBsb25nIHN0cmluZy4gdGhpcyBpcyBhIHJlYWxseSBsb25nIHN0cmluZy4gdGhpcyBpcyBhIHJlYWxseSBsb25nIHN0cmluZy4gdGhpcyBpcyBhIHJlYWxseSBsb25nIHN0cmluZy4=' LONG_URLENCODED = 'this%20is%20a%20really%20long%20string.%20this%20is%20a%20really%20long%20string.%20this%20is%20a%20really%20long%20string.%20this%20is%20a%20really%20long%20string.%20this%20is%20a%20really%20long%20string.%20this%20is%20a%20really%20long%20string.%20this%20is%20a%20really%20long%20string.%20this%20is%20a%20really%20long%20string.' # data: uris SHORT_APPLICATION_OCTET_STREAM_URI = "data:#{APPLICATION_OCTET_STREAM};base64,#{SHORT_BASE64}" SHORT_TEXT_PLAIN_URI = "data:#{TEXT_PLAIN},#{SHORT_URLENCODED}" LONG_APPLICATION_OCTET_STREAM_URI = "data:#{APPLICATION_OCTET_STREAM};base64,#{LONG_BASE64}" LONG_TEXT_PLAIN_URI = "data:#{TEXT_PLAIN},#{LONG_URLENCODED}" # test page TEST_PAGE_URL = 'http://segment7.net/ruby-code/datafy/test.html' TEST_PAGE_ENCODED = 'data:text/html,%3Chtml%3E%0A%20%20%3Chead%3E%0A%20%20%20%20%3Ctitle%3Edatafy%20test%3C%2Ftitle%3E%0A%20%20%20%20%3Clink%20href%3D%22data%3Atext%2Fcss%2Cli%2520%257B%250A%2520%2520list-style-image%253A%2520url%2528%2522data%253Aimage%252Fpng%253Bbase64%252CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QAAAAAAAD5Q7t%252FAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH0gkaFzgDNmmaugAAAFhJREFUeNq9kkESwCAIA8sO%252F%252F8yPXTGA2AqF72JCZhVi4hnsjztzSxVUke0uhbR6nrE4U2WANG79aCZVIb8ckwePwk6m3DR8IWhRSGis8O3A4VA3j%252Ff9Hu%252F%252FdAqF24UcxUAAAAASUVORK5CYII%253D%2522%2529%253B%250A%257D%250A%22%20type%3D%22text%2Fcss%22%20rel%3D%22stylesheet%22%20%2F%3E%0A%20%20%3C%2Fhead%3E%0A%20%20%3Cbody%3E%0A%20%20%20%20%3Cp%3EThis%20is%20a%20test%20page%20for%20datafy.%3C%2Fp%3E%0A%20%20%20%20%3Cp%3EHere%20is%20a%20%3Ca%20href%3D%22http%3A%2F%2Fsegment7.net%3A80%2F%22%3Elink%3C%2Fa%3E%3C%2Fp%3E%0A%20%20%20%20%3Cul%3E%0A%20%20%20%20%20%20%3Cli%3EHere%20is%20a%20list%20item%20with%20a%20CSS-styled%20list-style-image%2C%20it%20should%20have%20%3Cimg%20src%3D%22data%3Aimage%2Fpng%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAIAAACQkWg2AAAABmJLR0QAAAAAAAD5Q7t%2FAAAACXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH0gkaFzgDNmmaugAAAFhJREFUeNq9kkESwCAIA8sO%2F%2F8yPXTGA2AqF72JCZhVi4hnsjztzSxVUke0uhbR6nrE4U2WANG79aCZVIb8ckwePwk6m3DR8IWhRSGis8O3A4VA3j%2Ff9Hu%2F%2FdAqF24UcxUAAAAASUVORK5CYII%3D%22%20alt%3D%22its%20broken%21%22%20%2F%3E%20as%20its%20image.%3C%2Fli%3E%0A%20%20%20%20%3C%2Ful%3E%0A%20%20%3C%2Fbody%3E%0A%3C%2Fhtml%3E%0A' end # TC_Datafy