** РЕДАКТИРОВАНИЕ: Посмотрите ответ Jason Bunting. Этот ответ на самом деле показывает, что способ ниже среднего объединить в цепочку многочисленный звонит, ни один-вызов с предварительными установками для некоторых аргументов. Если этот ответ на самом деле помогает с подобной проблемой, несомненно, необходимо будет использовать, применяются и звонят, как Jason рекомендует вместо неясного способа использовать оценку, которую я продумал. **
Хорошо... Ваш на самом деле запишет "неопределенный" много в этом..., но это должно быть близко к тому, что Вы хотите:
function out(a, b) {
document.write(a + " " + b);
}
function getArgString( args, start ) {
var argStr = "";
for( var i = start; i < args.length; i++ ) {
if( argStr != "" ) {
argStr = argStr + ", ";
}
argStr = argStr + "arguments[" + i + "]"
}
return argStr;
}
function setter(func) {
var argStr = getArgString( arguments, 1 );
eval( "func( " + argStr + ");" );
var newSettter = function() {
var argStr = getArgString( arguments, 0 );
if( argStr == "" ) {
argStr = "func";
} else {
argStr = "func, " + argStr;
}
return eval( "setter( " + argStr + ");" );
}
return newSettter;
}
setter(out, "hello")("world");
setter(out, "hello", "world")();
я, вероятно, переместил бы код в getArgString в саму функцию метода set, хотя... немного более безопасный, так как я использовал 'оценку
Также имеется JSpec
JSpec - чрезвычайно маленькая, но очень мощная среда тестирования. Используя собственную грамматику и препроцессор, JSpec может работать так, как никакая другая среда тестирования JavaScript. Это включает в себя множество полезных сокращенных литералов, очень интуитивно понятный / читаемый синтаксис, а также не загрязняет прототипы основных объектов.
JSpec также можно запускать различными способами, например, через терминал с поддержкой Rhino, через браузеры, использующие Модули форматирования DOM или консоли или, наконец, с помощью среды тестирования Ruby JavaScript, которая запускает браузеры в фоновом режиме, отправляя отчеты на терминал. JCEMac.java
Также ознакомьтесь с jPos:
и их собственной реализацией алгоритма MAC для розничной торговли:
Я почти уверен (IIRC), что вам нужно в конце вызвать TransformFinalBlock
(для каждого шифратора).
Не могу ответить на ваш конкретный терминал, но я использую это для тестирования MAC.
public static byte[] GenerateMAC(byte[] key, byte[] data)
{
using (MACTripleDES mac = new MACTripleDES(key))
return mac.ComputeHash(data);
}