js-base64 2.4.2 → 2.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -4,6 +4,21 @@
4
4
 
5
5
  Yet another Base64 transcoder
6
6
 
7
+ ## Install
8
+
9
+ ```javascript
10
+ $ npm install --save js-base64
11
+ ```
12
+
13
+ If you are using it on ES6 transpilers, you may also need:
14
+
15
+ ```javascript
16
+ $ npm install --save babel-preset-es2015
17
+ ```
18
+
19
+ Note `js-base64` itself is stand-alone so its `package.json` has no `dependencies`.  However, it is also tested on ES6 environment so `"babel-preset-es2015": "^6.24.1"` is on `devDependencies`.
20
+
21
+
7
22
  ## Usage
8
23
 
9
24
  ### In Browser
@@ -24,13 +39,6 @@ var Base64 = require('js-base64').Base64;
24
39
  import { Base64 } from 'js-base64';
25
40
  ```
26
41
 
27
- ### npm
28
-
29
- ```javascript
30
- $ npm install --save js-base64
31
- ```
32
-
33
-
34
42
  ## SYNOPSIS
35
43
 
36
44
  ```javascript
package/base64.html CHANGED
@@ -3,10 +3,10 @@
3
3
  <html>
4
4
  <head>
5
5
  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
6
- <title>Test for base64.js</title>
6
+ <title>Demo for base64.js</title>
7
7
  </head>
8
8
  <body>
9
- <h1>Test for base64.js</h1>
9
+ <h1>Demo for base64.js</h1>
10
10
  <p>$Id: base64.html,v 1.1 2009/03/01 22:00:28 dankogai Exp dankogai $</p>
11
11
  <table width="640"><tbody>
12
12
  <tr><th width="50%">Text</th><th>Base64
@@ -14,7 +14,7 @@
14
14
  <tr>
15
15
  <th><textarea id="srctxt" cols="32" rows="4" onkeyup="doit()">
16
16
  </textarea></th>
17
- <th><textarea id="base64" cols=32" rows="4" onkeyup="
17
+ <th><textarea id="base64" cols="32" rows="4" onkeyup="
18
18
  $('srctxt').value = Base64.decode(this.value);
19
19
  doit();
20
20
  if (1 /*@cc_on -1 @*/) $('data').src = 'data:text/plain;base64,' + this.value;
@@ -44,4 +44,4 @@ function doit(){
44
44
  }
45
45
  </script>
46
46
  </body>
47
- </html>
47
+ </html>
package/base64.js CHANGED
@@ -11,7 +11,7 @@
11
11
  typeof exports === 'object' && typeof module !== 'undefined'
12
12
  ? module.exports = factory(global)
13
13
  : typeof define === 'function' && define.amd
14
- ? define(factory) : null
14
+ ? define(factory) : factory(global)
15
15
  }((
16
16
  typeof self !== 'undefined' ? self
17
17
  : typeof window !== 'undefined' ? window
@@ -21,7 +21,7 @@
21
21
  'use strict';
22
22
  // existing version for noConflict()
23
23
  var _Base64 = global.Base64;
24
- var version = "2.4.2";
24
+ var version = "2.4.6";
25
25
  // if node.js, we use Buffer
26
26
  var buffer;
27
27
  if (typeof module !== 'undefined' && module.exports) {
@@ -81,7 +81,8 @@
81
81
  return b.replace(/[\s\S]{1,3}/g, cb_encode);
82
82
  };
83
83
  var _encode = buffer ?
84
- buffer.from && buffer.from !== Uint8Array.from ? function (u) {
84
+ buffer.from && Uint8Array && buffer.from !== Uint8Array.from
85
+ ? function (u) {
85
86
  return (u.constructor === buffer.constructor ? u : buffer.from(u))
86
87
  .toString('base64')
87
88
  }
@@ -152,7 +153,8 @@
152
153
  return a.replace(/[\s\S]{1,4}/g, cb_decode);
153
154
  };
154
155
  var _decode = buffer ?
155
- buffer.from && buffer.from !== Uint8Array.from ? function(a) {
156
+ buffer.from && Uint8Array && buffer.from !== Uint8Array.from
157
+ ? function(a) {
156
158
  return (a.constructor === buffer.constructor
157
159
  ? a : buffer.from(a, 'base64')).toString();
158
160
  }
package/base64.min.js CHANGED
@@ -1 +1 @@
1
- (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory(global):typeof define==="function"&&define.amd?define(factory):null})(typeof self!=="undefined"?self:typeof window!=="undefined"?window:typeof global!=="undefined"?global:this,function(global){"use strict";var _Base64=global.Base64;var version="2.4.2";var buffer;if(typeof module!=="undefined"&&module.exports){try{buffer=require("buffer").Buffer}catch(err){}}var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var b64tab=function(bin){var t={};for(var i=0,l=bin.length;i<l;i++)t[bin.charAt(i)]=i;return t}(b64chars);var fromCharCode=String.fromCharCode;var cb_utob=function(c){if(c.length<2){var cc=c.charCodeAt(0);return cc<128?c:cc<2048?fromCharCode(192|cc>>>6)+fromCharCode(128|cc&63):fromCharCode(224|cc>>>12&15)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}else{var cc=65536+(c.charCodeAt(0)-55296)*1024+(c.charCodeAt(1)-56320);return fromCharCode(240|cc>>>18&7)+fromCharCode(128|cc>>>12&63)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}};var re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;var utob=function(u){return u.replace(re_utob,cb_utob)};var cb_encode=function(ccc){var padlen=[0,2,1][ccc.length%3],ord=ccc.charCodeAt(0)<<16|(ccc.length>1?ccc.charCodeAt(1):0)<<8|(ccc.length>2?ccc.charCodeAt(2):0),chars=[b64chars.charAt(ord>>>18),b64chars.charAt(ord>>>12&63),padlen>=2?"=":b64chars.charAt(ord>>>6&63),padlen>=1?"=":b64chars.charAt(ord&63)];return chars.join("")};var btoa=global.btoa?function(b){return global.btoa(b)}:function(b){return b.replace(/[\s\S]{1,3}/g,cb_encode)};var _encode=buffer?buffer.from&&buffer.from!==Uint8Array.from?function(u){return(u.constructor===buffer.constructor?u:buffer.from(u)).toString("base64")}:function(u){return(u.constructor===buffer.constructor?u:new buffer(u)).toString("base64")}:function(u){return btoa(utob(u))};var encode=function(u,urisafe){return!urisafe?_encode(String(u)):_encode(String(u)).replace(/[+\/]/g,function(m0){return m0=="+"?"-":"_"}).replace(/=/g,"")};var encodeURI=function(u){return encode(u,true)};var re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g");var cb_btou=function(cccc){switch(cccc.length){case 4:var cp=(7&cccc.charCodeAt(0))<<18|(63&cccc.charCodeAt(1))<<12|(63&cccc.charCodeAt(2))<<6|63&cccc.charCodeAt(3),offset=cp-65536;return fromCharCode((offset>>>10)+55296)+fromCharCode((offset&1023)+56320);case 3:return fromCharCode((15&cccc.charCodeAt(0))<<12|(63&cccc.charCodeAt(1))<<6|63&cccc.charCodeAt(2));default:return fromCharCode((31&cccc.charCodeAt(0))<<6|63&cccc.charCodeAt(1))}};var btou=function(b){return b.replace(re_btou,cb_btou)};var cb_decode=function(cccc){var len=cccc.length,padlen=len%4,n=(len>0?b64tab[cccc.charAt(0)]<<18:0)|(len>1?b64tab[cccc.charAt(1)]<<12:0)|(len>2?b64tab[cccc.charAt(2)]<<6:0)|(len>3?b64tab[cccc.charAt(3)]:0),chars=[fromCharCode(n>>>16),fromCharCode(n>>>8&255),fromCharCode(n&255)];chars.length-=[0,0,2,1][padlen];return chars.join("")};var atob=global.atob?function(a){return global.atob(a)}:function(a){return a.replace(/[\s\S]{1,4}/g,cb_decode)};var _decode=buffer?buffer.from&&buffer.from!==Uint8Array.from?function(a){return(a.constructor===buffer.constructor?a:buffer.from(a,"base64")).toString()}:function(a){return(a.constructor===buffer.constructor?a:new buffer(a,"base64")).toString()}:function(a){return btou(atob(a))};var decode=function(a){return _decode(String(a).replace(/[-_]/g,function(m0){return m0=="-"?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))};var noConflict=function(){var Base64=global.Base64;global.Base64=_Base64;return Base64};global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict};if(typeof Object.defineProperty==="function"){var noEnum=function(v){return{value:v,enumerable:false,writable:true,configurable:true}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)}));Object.defineProperty(String.prototype,"toBase64",noEnum(function(urisafe){return encode(this,urisafe)}));Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,true)}))}}if(global["Meteor"]){Base64=global.Base64}if(typeof module!=="undefined"&&module.exports){module.exports.Base64=global.Base64}else if(typeof define==="function"&&define.amd){define([],function(){return global.Base64})}return{Base64:global.Base64}});
1
+ (function(global,factory){typeof exports==="object"&&typeof module!=="undefined"?module.exports=factory(global):typeof define==="function"&&define.amd?define(factory):factory(global)})(typeof self!=="undefined"?self:typeof window!=="undefined"?window:typeof global!=="undefined"?global:this,function(global){"use strict";var _Base64=global.Base64;var version="2.4.6";var buffer;if(typeof module!=="undefined"&&module.exports){try{buffer=require("buffer").Buffer}catch(err){}}var b64chars="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";var b64tab=function(bin){var t={};for(var i=0,l=bin.length;i<l;i++)t[bin.charAt(i)]=i;return t}(b64chars);var fromCharCode=String.fromCharCode;var cb_utob=function(c){if(c.length<2){var cc=c.charCodeAt(0);return cc<128?c:cc<2048?fromCharCode(192|cc>>>6)+fromCharCode(128|cc&63):fromCharCode(224|cc>>>12&15)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}else{var cc=65536+(c.charCodeAt(0)-55296)*1024+(c.charCodeAt(1)-56320);return fromCharCode(240|cc>>>18&7)+fromCharCode(128|cc>>>12&63)+fromCharCode(128|cc>>>6&63)+fromCharCode(128|cc&63)}};var re_utob=/[\uD800-\uDBFF][\uDC00-\uDFFFF]|[^\x00-\x7F]/g;var utob=function(u){return u.replace(re_utob,cb_utob)};var cb_encode=function(ccc){var padlen=[0,2,1][ccc.length%3],ord=ccc.charCodeAt(0)<<16|(ccc.length>1?ccc.charCodeAt(1):0)<<8|(ccc.length>2?ccc.charCodeAt(2):0),chars=[b64chars.charAt(ord>>>18),b64chars.charAt(ord>>>12&63),padlen>=2?"=":b64chars.charAt(ord>>>6&63),padlen>=1?"=":b64chars.charAt(ord&63)];return chars.join("")};var btoa=global.btoa?function(b){return global.btoa(b)}:function(b){return b.replace(/[\s\S]{1,3}/g,cb_encode)};var _encode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(u){return(u.constructor===buffer.constructor?u:buffer.from(u)).toString("base64")}:function(u){return(u.constructor===buffer.constructor?u:new buffer(u)).toString("base64")}:function(u){return btoa(utob(u))};var encode=function(u,urisafe){return!urisafe?_encode(String(u)):_encode(String(u)).replace(/[+\/]/g,function(m0){return m0=="+"?"-":"_"}).replace(/=/g,"")};var encodeURI=function(u){return encode(u,true)};var re_btou=new RegExp(["[À-ß][€-¿]","[à-ï][€-¿]{2}","[ð-÷][€-¿]{3}"].join("|"),"g");var cb_btou=function(cccc){switch(cccc.length){case 4:var cp=(7&cccc.charCodeAt(0))<<18|(63&cccc.charCodeAt(1))<<12|(63&cccc.charCodeAt(2))<<6|63&cccc.charCodeAt(3),offset=cp-65536;return fromCharCode((offset>>>10)+55296)+fromCharCode((offset&1023)+56320);case 3:return fromCharCode((15&cccc.charCodeAt(0))<<12|(63&cccc.charCodeAt(1))<<6|63&cccc.charCodeAt(2));default:return fromCharCode((31&cccc.charCodeAt(0))<<6|63&cccc.charCodeAt(1))}};var btou=function(b){return b.replace(re_btou,cb_btou)};var cb_decode=function(cccc){var len=cccc.length,padlen=len%4,n=(len>0?b64tab[cccc.charAt(0)]<<18:0)|(len>1?b64tab[cccc.charAt(1)]<<12:0)|(len>2?b64tab[cccc.charAt(2)]<<6:0)|(len>3?b64tab[cccc.charAt(3)]:0),chars=[fromCharCode(n>>>16),fromCharCode(n>>>8&255),fromCharCode(n&255)];chars.length-=[0,0,2,1][padlen];return chars.join("")};var atob=global.atob?function(a){return global.atob(a)}:function(a){return a.replace(/[\s\S]{1,4}/g,cb_decode)};var _decode=buffer?buffer.from&&Uint8Array&&buffer.from!==Uint8Array.from?function(a){return(a.constructor===buffer.constructor?a:buffer.from(a,"base64")).toString()}:function(a){return(a.constructor===buffer.constructor?a:new buffer(a,"base64")).toString()}:function(a){return btou(atob(a))};var decode=function(a){return _decode(String(a).replace(/[-_]/g,function(m0){return m0=="-"?"+":"/"}).replace(/[^A-Za-z0-9\+\/]/g,""))};var noConflict=function(){var Base64=global.Base64;global.Base64=_Base64;return Base64};global.Base64={VERSION:version,atob:atob,btoa:btoa,fromBase64:decode,toBase64:encode,utob:utob,encode:encode,encodeURI:encodeURI,btou:btou,decode:decode,noConflict:noConflict};if(typeof Object.defineProperty==="function"){var noEnum=function(v){return{value:v,enumerable:false,writable:true,configurable:true}};global.Base64.extendString=function(){Object.defineProperty(String.prototype,"fromBase64",noEnum(function(){return decode(this)}));Object.defineProperty(String.prototype,"toBase64",noEnum(function(urisafe){return encode(this,urisafe)}));Object.defineProperty(String.prototype,"toBase64URI",noEnum(function(){return encode(this,true)}))}}if(global["Meteor"]){Base64=global.Base64}if(typeof module!=="undefined"&&module.exports){module.exports.Base64=global.Base64}else if(typeof define==="function"&&define.amd){define([],function(){return global.Base64})}return{Base64:global.Base64}});
package/base64_utf8 CHANGED
@@ -2,7 +2,7 @@
2
2
  typeof exports === 'object' && typeof module !== 'undefined'
3
3
  ? module.exports = factory(global)
4
4
  : typeof define === 'function' && define.amd
5
- ? define(factory) : null
5
+ ? define(factory) : factory(global)
6
6
  }((
7
7
  typeof self !== 'undefined' ? self
8
8
  : typeof window !== 'undefined' ? window
@@ -12,7 +12,7 @@
12
12
  'use strict';
13
13
  // existing version for noConflict()
14
14
  var _Base64 = global.Base64;
15
- var version = "2.4.2";
15
+ var version = "2.4.6";
16
16
  // if node.js, we use Buffer
17
17
  var buffer;
18
18
  if (typeof module !== 'undefined' && module.exports) {
@@ -208,8 +208,8 @@
208
208
  if (typeof module !== 'undefined' && module.exports) {
209
209
  module.exports.Base64 = global.Base64;
210
210
  }
211
- else if (typeof define === 'function' && define.amd) {
212
- // AMD. Register as an anonymous module.
211
+ else if (typeof define === 'function' && define.amd) {
212
+ // AMD. Register as an anonymous module.
213
213
  define([], function(){ return global.Base64 });
214
214
  }
215
215
  // that's it!
package/bower.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "js-base64",
3
- "version": "2.4.2",
3
+ "version": "2.4.6",
4
4
  "license": "BSD-3-Clause",
5
5
  "main": [
6
6
  "./base64.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "js-base64",
3
- "version": "2.4.2",
3
+ "version": "2.4.6",
4
4
  "description": "Yet another Base64 transcoder in pure-JS",
5
5
  "main": "base64.js",
6
6
  "directories": {
@@ -0,0 +1,44 @@
1
+ /*
2
+ * $Id: dankogai.js,v 0.4 2012/08/24 05:23:18 dankogai Exp dankogai $
3
+ *
4
+ * use mocha to test me
5
+ * http://visionmedia.github.com/mocha/
6
+ */
7
+ var assert = assert || require("assert");
8
+ var Base64 = Base64 || require('../base64.js').Base64;
9
+ var is = function (a, e, m) {
10
+ return function () {
11
+ assert.equal(a, e, m)
12
+ }
13
+ };
14
+
15
+ describe('basic', function () {
16
+ it('d', is(Base64.encode('d'), 'ZA=='));
17
+ it('da', is(Base64.encode('da'), 'ZGE='));
18
+ it('dan', is(Base64.encode('dan'), 'ZGFu'));
19
+ it('ZA==', is(Base64.decode('ZA=='), 'd' ));
20
+ it('ZGE=', is(Base64.decode('ZGE='), 'da' ));
21
+ it('ZGFu', is(Base64.decode('ZGFu'), 'dan' ));
22
+ });
23
+
24
+ describe('whitespace', function () {
25
+ it('Z A==', is(Base64.decode('ZA =='), 'd' ));
26
+ it('ZG E=', is(Base64.decode('ZG E='), 'da' ));
27
+ it('ZGF u', is(Base64.decode('ZGF u'), 'dan' ));
28
+ });
29
+
30
+ describe('null', function () {
31
+ it('\\0', is(Base64.encode('\0'), 'AA=='));
32
+ it('\\0\\0', is(Base64.encode('\0\0'), 'AAA='));
33
+ it('\\0\\0\\0', is(Base64.encode('\0\0\0'), 'AAAA'));
34
+ it('AA==', is(Base64.decode('AA=='), '\0' ));
35
+ it('AAA=', is(Base64.decode('AAA='), '\0\0' ));
36
+ it('AAAA', is(Base64.decode('AAAA'), '\0\0\0'));
37
+ });
38
+
39
+ describe('Base64', function () {
40
+ it('.encode', is(Base64.encode('小飼弾'), '5bCP6aO85by+'));
41
+ it('.encodeURI', is(Base64.encodeURI('小飼弾'), '5bCP6aO85by-'));
42
+ it('.decode', is(Base64.decode('5bCP6aO85by+'), '小飼弾'));
43
+ it('.decode', is(Base64.decode('5bCP6aO85by-'), '小飼弾'));
44
+ });
@@ -0,0 +1,24 @@
1
+ /*
2
+ * $Id: es5.js,v 0.1 2012/08/23 19:43:17 dankogai Exp dankogai $
3
+ *
4
+ * use mocha to test me
5
+ * http://visionmedia.github.com/mocha/
6
+ */
7
+ var assert = assert || require("assert");
8
+ var Base64 = Base64 || require('../base64.js').Base64;
9
+ var is = function (a, e, m) {
10
+ return function () {
11
+ assert.equal(a, e, m)
12
+ }
13
+ };
14
+
15
+ if ('extendString' in Base64){
16
+ Base64.extendString();
17
+ describe('String', function () {
18
+ it('.toBase64', is('小飼弾'.toBase64(), '5bCP6aO85by+'));
19
+ it('.toBase64', is('小飼弾'.toBase64(true), '5bCP6aO85by-'));
20
+ it('.toBase64URI', is('小飼弾'.toBase64URI(), '5bCP6aO85by-'));
21
+ it('.fromBase64', is('5bCP6aO85by+'.fromBase64(), '小飼弾'));
22
+ it('.fromBase64', is('5bCP6aO85by-'.fromBase64(), '小飼弾'));
23
+ });
24
+ }
@@ -0,0 +1,25 @@
1
+ /*
2
+ * $Id: es6.js,v 0.1 2017/11/29 21:43:17 ufolux Exp ufolux $
3
+ *
4
+ * use mocha to test me
5
+ * http://visionmedia.github.com/mocha/
6
+ */
7
+ import {Base64} from '../base64'
8
+
9
+ var assert = assert || require("assert");
10
+ var is = function (a, e, m) {
11
+ return function () {
12
+ assert.equal(a, e, m)
13
+ }
14
+ };
15
+
16
+ if ('extendString' in Base64){
17
+ Base64.extendString();
18
+ describe('String', function () {
19
+ it('.toBase64', is('小飼弾'.toBase64(), '5bCP6aO85by+'));
20
+ it('.toBase64', is('小飼弾'.toBase64(true), '5bCP6aO85by-'));
21
+ it('.toBase64URI', is('小飼弾'.toBase64URI(), '5bCP6aO85by-'));
22
+ it('.fromBase64', is('5bCP6aO85by+'.fromBase64(), '小飼弾'));
23
+ it('.fromBase64', is('5bCP6aO85by-'.fromBase64(), '小飼弾'));
24
+ });
25
+ }
@@ -0,0 +1,40 @@
1
+ <html>
2
+ <head>
3
+ <meta charset="utf-8">
4
+ <title>Mocha Tests</title>
5
+ <link href="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.css" rel="stylesheet" />
6
+ </head>
7
+ <body>
8
+ <div id="mocha"></div>
9
+
10
+ <script src="https://cdn.rawgit.com/jquery/jquery/2.1.4/dist/jquery.min.js"></script>
11
+ <script src="https://cdn.rawgit.com/Automattic/expect.js/0.3.1/index.js"></script>
12
+ <script src="https://cdn.rawgit.com/mochajs/mocha/2.2.5/mocha.js"></script>
13
+ <script>
14
+ mocha.setup('bdd');
15
+ </script>
16
+ <script src="./moment.js"></script>
17
+ <script src="../base64.js"></script>
18
+ <script>
19
+ var assert = function(expr, msg) {
20
+ if (!expr) throw new Error(msg || 'failed');
21
+ };
22
+ assert.equal = function(a, b, msg) {
23
+ if (a !== b) throw new Error(msg || ('failed : '+a+','+b));
24
+ };
25
+ </script>
26
+ <script src="./dankogai.js"></script>
27
+ <script src="./es5.js"></script>
28
+ <script src="./large.js"></script>
29
+ <script src="./yoshinoya.js"></script>
30
+ <script>
31
+ $(function() {
32
+ mocha.run();
33
+ });
34
+ </script>
35
+ </head>
36
+ <body>
37
+ $Id: index.html,v 0.3 2017/09/11 08:43:43 dankogai Exp dankogai $
38
+ <div id="mocha"></div>
39
+ </body>
40
+ </html>
@@ -0,0 +1,25 @@
1
+ /*
2
+ * $Id: large.js,v 0.3 2012/08/23 19:14:37 dankogai Exp dankogai $
3
+ *
4
+ * use mocha to test me
5
+ * http://visionmedia.github.com/mocha/
6
+ */
7
+ var assert = assert || require("assert");
8
+ var Base64 = Base64 || require('../base64.js').Base64;
9
+ var is = function (a, e, m) {
10
+ return function () {
11
+ assert.equal(a, e, m)
12
+ }
13
+ };
14
+ var seed = function () {
15
+ var a, i;
16
+ for (a = [], i = 0; i < 256; i++) {
17
+ a.push(String.fromCharCode(i));
18
+ }
19
+ return a.join('');
20
+ }();
21
+ describe('Base64', function () {
22
+ for (var i = 0, str = seed; i < 16; str += str, i++) {
23
+ it(''+str.length, is(Base64.decode(Base64.encode(str)), str));
24
+ }
25
+ });