Skip to content

Instantly share code, notes, and snippets.

@medains
medains / keybase.md
Created August 20, 2019 07:41
Keybase identity proof

Keybase proof

I hereby claim:

  • I am medains on github.
  • I am medains (https://keybase.io/medains) on keybase.
  • I have a public key ASAqt8by4kX9Qy9JGz0Ywl_0ZjMt1hoK8vBnohcP-3NoqAo

To claim this, I am signing this object:

@medains
medains / app.js
Created May 9, 2013 12:28
Final conversion details
function checkDef( val ) {
if( val === undefined ) {
throw new Error( 'Number out of range' );
}
}
function _doConvert( arabic, single, five, ten ) {
var i = parseInt( arabic, 10 );
switch( i ) {
case 1: return single;
case 2: return single + single;
@medains
medains / appTest.js
Created May 9, 2013 12:26
Error tests
it( 'returns errors', function(){
assert.equal( 'Number out of range', app.convertArabicToRoman( '4000' ), '4000 error not shown' );
assert.equal( 'Number out of range', app.convertArabicToRoman( '-1' ), '-1 error not shown' );
assert.equal( 'Cannot convert', app.convertArabicToRoman( 'dsfa' ), 'string error not shown' );
assert.equal( 'Cannot convert', app.convertArabicToRoman( '7 years' ), 'string error not shown' );
});
@medains
medains / app.js
Created May 9, 2013 12:25
cover remaining digits
function _doConvert( arabic, single, five, ten ) {
var i = parseInt( arabic, 10 );
switch( i ) {
case 1: return single;
case 2: return single + single;
case 3: return single + single + single;
case 4: return single + five;
case 5: return five;
case 6: return five + single;
case 7: return five + single + single;
@medains
medains / appTest.js
Last active December 17, 2015 03:59
Check tens, hundreds and thousands
it( 'converts tens', function(){
assert.equal( 'X', app.convertArabicToRoman( '10' ), '10 != X' );
assert.equal( 'XX', app.convertArabicToRoman( '20' ), '20 != XX' );
assert.equal( 'XXX', app.convertArabicToRoman( '30' ), '30 != XXX' );
assert.equal( 'XL', app.convertArabicToRoman( '40' ), '40 != XL' );
assert.equal( 'L', app.convertArabicToRoman( '50' ), '50 != L' );
assert.equal( 'LX', app.convertArabicToRoman( '60' ), '60 != LX' );
assert.equal( 'LXX', app.convertArabicToRoman( '70' ), '70 != LXX' );
assert.equal( 'LXXX', app.convertArabicToRoman( '80' ), '80 != LXXX' );
assert.equal( 'XC', app.convertArabicToRoman( '90' ), '90 != XC' );
@medains
medains / app.js
Created May 9, 2013 12:22
conversion for single digits
var App = {
...
convertArabicToRoman = function( arabic ) {
var i = parseInt( arabic, 10 );
switch( i ) {
case 1: return "I";
case 2: return "II";
case 3: return "III";
case 4: return "IV";
case 5: return "V";
@medains
medains / appTest.js
Created May 9, 2013 12:07
First conversion test
it( 'converts single digits', function(){
assert.equal( '', app.convertArabicToRoman( '0' ), '0 != ""' );
assert.equal( 'I', app.convertArabicToRoman( '1' ), '1 != I' );
assert.equal( 'II', app.convertArabicToRoman( '2' ), '2 != II' );
assert.equal( 'III', app.convertArabicToRoman( '3' ), '3 != II' );
assert.equal( 'IV', app.convertArabicToRoman( '4' ), '4 != IV' );
assert.equal( 'V', app.convertArabicToRoman( '5' ), '5 != V' );
assert.equal( 'VI', app.convertArabicToRoman( '6' ), '6 != VI' );
assert.equal( 'VII', app.convertArabicToRoman( '7' ), '7 != VII' );
assert.equal( 'VIII', app.convertArabicToRoman( '8' ), '8 != VIII' );
@medains
medains / app.js
Created May 9, 2013 07:58
app.js with working action method
var App = {
...
convertArabicToRoman: function(v) {
return v;
},
action: function(e) {
var self = this;
self.fetchInput( function(value) {
var out = self.convertArabicToRoman( value );
self.writeOutput( out, function(){} );
@medains
medains / appTest.js
Created May 9, 2013 07:47
appTest unwrapping stubs
describe( 'App', function(){
afterEach(function(){
for( element in app ) {
if( app[element].restore ) {
app[element].restore();
}
}
});
...
});
@medains
medains / appTest.js
Created May 9, 2013 07:30
action test
describe('action', function() {
it('reads from input, convert and writes to output', function(){
app.fetchInput = sinon.stub().yields( 23 );
app.writeOutput = sinon.stub().yields();
app.convertArabicToRoman = sinon.stub().returns('IV');
var e = {
stop: sinon.stub()
};
app.action( e );
sinon.assert.callCount( app.fetchInput, 1 );