Fixed issue with number values

This commit is contained in:
2015-05-03 13:28:52 +02:00
parent 1fb075194e
commit 294e4ca849
2 changed files with 52 additions and 7 deletions
+29 -5
View File
@@ -175,12 +175,18 @@ types = {
},
write: function(value, buffer, offset) {
buffer.writeUInt8(value.length, offset ++);
if (typeof value === 'string' || typeof value === 'number') {
if (typeof value === 'number') {
value = value.toString();
}
if (typeof value === 'string') {
value = new Buffer(value, 'ascii');
}
value.copy(buffer, offset);
},
size: function(value) {
if (typeof value === 'number') {
value = value.toString();
}
return value.length + 1;
},
default: ''
@@ -197,7 +203,10 @@ types = {
return buffer.toString('ascii', offset, offset + length);
},
write: function(value, buffer, offset) {
if (typeof value === 'string' || typeof value === 'number') {
if (typeof value === 'number') {
value = value.toString();
}
if (typeof value === 'string') {
value = new Buffer(value, 'ascii');
}
value.copy(buffer, offset);
@@ -217,7 +226,10 @@ types = {
return buffer.slice(offset, offset + length);
},
write: function(value, buffer, offset) {
if (typeof value === 'string' || typeof value === 'number') {
if (typeof value === 'number') {
value = value.toString();
}
if (typeof value === 'string') {
value = new Buffer(value, 'ascii');
}
value.copy(buffer, offset);
@@ -337,12 +349,18 @@ types.tlv = {
return buffer.toString('ascii', offset, offset + length);
},
write: function(value, buffer, offset) {
if (typeof value === 'string' || typeof value === 'number') {
if (typeof value === 'number') {
value = value.toString();
}
if (typeof value === 'string') {
value = new Buffer(value, 'ascii');
}
value.copy(buffer, offset);
},
size: function(value) {
if (typeof value === 'number') {
value = value.toString();
}
return value.length;
},
default: ''
@@ -352,12 +370,18 @@ types.tlv = {
return buffer.slice(offset, offset + length);
},
write: function(value, buffer, offset) {
if (typeof value === 'string' || typeof value === 'number') {
if (typeof value === 'number') {
value = value.toString();
}
if (typeof value === 'string') {
value = new Buffer(value, 'ascii');
}
value.copy(buffer, offset);
},
size: function(value) {
if (typeof value === 'number') {
value = value.toString();
}
return value.length;
},
default: null
+23 -2
View File
@@ -141,6 +141,29 @@ describe('PDU convertion', function() {
done();
});
});
it('should encode and decode integer cstring params correctly', function(done) {
var pduObj = {
'cmdName': 'submit_sm_resp',
'cmdStatus': 'ESME_ROK',
'seqNr': 2,
'params': {
'message_id': 450
}
};
larvitsmpp.utils.objToPdu(pduObj, function(err, pduBuf) {
assert( ! err, 'Error should be negative');
larvitsmpp.utils.pduToObj(pduBuf, function(err, retPduObj) {
assert( ! err, 'Error should be negative');
assert(retPduObj.params.message_id === '450', 'message_id param should be 450, but as string');
done();
});
});
});
});
describe('TLVs', function() {
@@ -204,7 +227,6 @@ describe('PDU convertion', function() {
});
describe('Return PDUs', function() {
it('should create a basic and valid return PDU', function(done) {
var pduObj = {
'cmdName': 'deliver_sm',
@@ -286,7 +308,6 @@ describe('PDU convertion', function() {
});
});
});
});
});