This commit is contained in:
Михаил Капелько
2024-06-02 23:20:18 +03:00
parent e9e0073061
commit 17a2615351
10 changed files with 246 additions and 9 deletions

View File

@@ -32,10 +32,7 @@ class ctx_Controller:
self.callbacks.append(cb)
def registerFieldCallback(self, fieldName, cb):
def execCB(c):
if c.recentField == fieldName:
cb(c)
self.callbacks.append(execCB)
self.callbacks.append(lambda c: cb(c) if c.recentField == fieldName else None)
def registerFunction(self, f):
self.functions.append(f)

86
v4/ctx_test.cpp Normal file
View File

@@ -0,0 +1,86 @@
#include <map>
#include <string>
#include <vector>
#include "ctx.h"
#include "llm.h"
#include "memory_Context.h"
#include "main.h"
std::string ctx_test_Controller_executeFunctions_set(
) {
auto c = memory_createContext();
auto ctrl = ctx_Controller(c);
// Disable automatic invocation of executeFunctions.
ctrl.isProcessingQueue = true;
ctrl.set("input", "123");
ctrl.registerFunction(__processInput);
// Apply 'input'.
ctrl.executeFunctions();
// Apply 'outputHelp'.
ctrl.executeFunctions();
if (
c.input == "123" &&
c.outputHelp == "Checked"
) {
return "OK: ctx_Controller_executeFunctions_set";
}
return "ERR: ctx_Controller_executeFunctions_set";
}
std::string ctx_test_Controller_processQueue(
) {
auto c = memory_createContext();
auto ctrl = ctx_Controller(c);
ctrl.registerFunction(__processInput);
ctrl.set("input", "abc");;
if (
c.input == "abc" &&
c.outputHelp == "Checked"
) {
return "OK: ctx_Controller_processQueue";
}
return "ERR: ctx_Controller_processQueue";
}
std::string ctx_test_memoryContext_field(
) {
auto c = memory_createContext();
c.input = "abc";
if (
c.field("input") == "abc"
) {
return "OK: ctx_memoryContext_field";
}
return "ERR: ctx_memoryContext_field";
}
std::string ctx_test_memoryContext_setField(
) {
auto c = memory_createContext();
c.input = "abc";
c.setField("input", "123");
if (
c.field("input") == "123"
) {
return "OK: ctx_memoryContext_setField";
}
return "ERR: ctx_memoryContext_setField";
}
// Auxiliary functions.
memory_Context __processInput(
memory_Context c
) {
if (
c.recentField == "input"
) {
c.outputHelp = "Checked";
c.recentField = "outputHelp";
return c;
}
c.recentField = "none";
return c;
}

View File

@@ -66,7 +66,9 @@ def ctx_test_memoryContext_setField(
# Auxiliary functions.
@llm_by_value
def __processInput(c):
def __processInput(
c: memory_Context
) -> memory_Context:
if (
c.recentField == "input"
):

142
v4/ctx_test2.py Normal file
View File

@@ -0,0 +1,142 @@
from ctx import *
from memory import *
from memory_Context import *
def ctx_test_Controller_executeFunctions_set(
) -> str:
c = memory_createContext()
ctrl = ctx_Controller(c)
# Disable automatic invocation of executeFunctions.
ctrl.isProcessingQueue = True
ctrl.set("input", "123")
@llm_by_value
def processInput(c):
if (
c.recentField == "input"
):
c.outputHelp = "Checked"
c.recentField = "outputHelp"
return c
#}
c.recentField = "none"
return c
#}
ctrl.registerFunction(processInput)
# Apply 'input'.
ctrl.executeFunctions()
# Apply 'outputHelp'.
ctrl.executeFunctions()
if (
c.input == "123" and
c.outputHelp == "Checked"
):
return "OK: ctx_Controller_executeFunctions_set"
#}
return "ERR: ctx_Controller_executeFunctions_set"
#}
def ctx_test_Controller_processQueue(
) -> str:
c = memory_createContext()
ctrl = ctx_Controller(c)
@llm_by_value
def processInput(c):
if (
c.recentField == "input"
):
c.outputHelp = "Checked"
c.recentField = "outputHelp"
return c
#}
c.recentField = "none"
return c
#}
ctrl.registerFunction(processInput)
ctrl.set("input", "abc");
if (
c.input == "abc" and
c.outputHelp == "Checked"
):
return "OK: ctx_Controller_processQueue"
#}
return "ERR: ctx_Controller_processQueue"
#}
def ctx_test_Controller_registerFieldCallback_match(
) -> str:
c = memory_createContext()
ctrl = ctx_Controller(c)
c.input = "123"
c.recentField = "input"
globals()["callbackInput"] = ""
def setCallbackInput(c):
if (
c.recentField == "input"
):
globals()["callbackInput"] = c.input
ctrl.registerFieldCallback("input", setCallbackInput)
ctrl.reportContext()
if (
c.input == globals()["callbackInput"]
):
return "OK: ctx_Controller_registerFieldCallback_match"
#}
return f"ERR: ctx_Controller_registerFieldCallback_match"
#}
def ctx_test_Controller_registerFieldCallback_mismatch(
) -> str:
c = memory_createContext()
ctrl = ctx_Controller(c)
c.input = "123"
c.outputHelp = "you"
# A field other than 'input' is marked recent.
c.recentField = "outputHelp"
globals()["callbackInput"] = ""
def setCallbackInput(c):
if (
c.recentField == "input"
):
globals()["callbackInput"] = c.input
ctrl.registerFieldCallback("input", setCallbackInput)
ctrl.reportContext()
if (
globals()["callbackInput"] == ""
):
return "OK: ctx_Controller_registerFieldCallback_mismatch"
#}
return f"ERR: ctx_Controller_registerFieldCallback_mismatch"
#}
def ctx_test_memoryContext_field(
) -> str:
c = memory_createContext()
c.input = "abc"
if (
c.field("input") == "abc"
):
return "OK: ctx_memoryContext_field"
#}
return "ERR: ctx_memoryContext_field"
#}
def ctx_test_memoryContext_setField(
) -> str:
c = memory_createContext()
c.input = "abc"
c.setField("input", "123")
if (
c.input == "123"
):
return "OK: ctx_memoryContext_setField"
#}
return "ERR: ctx_memoryContext_setField"
#}

View File

@@ -7,6 +7,7 @@ grep '^memory_Context ' memory.cpp > $TMP
grep '^std::string ' memory_test.cpp >> $TMP
grep '^memory_Context ' cli.cpp >> $TMP
grep '^std::string ' cli_test.cpp >> $TMP
grep '^std::string ' ctx_test.cpp >> $TMP
grep '^std::string ' llm_test.cpp >> $TMP
IN=$TMP

View File

@@ -6,4 +6,5 @@ c++ -o test_memory_C++ -std=c++11 -I. \
llm_test.cpp \
cli.cpp \
cli_test.cpp \
ctx_test2.cpp \
main.cpp

View File

@@ -40,6 +40,10 @@ std::string cli_test_selectItem();
std::string cli_test_showHelp_h();
std::string cli_test_showHelp_help();
std::string cli_test_reportVictory();
std::string ctx_test_Controller_executeFunctions_set();
std::string ctx_test_Controller_processQueue();
std::string ctx_test_memoryContext_field();
std::string ctx_test_memoryContext_setField();
std::string llm_test_isDigit_digit();
std::string llm_test_isDigit_notDigit();
std::string llm_test_strToInt();

View File

@@ -1,8 +1,9 @@
from cli import *
from cli_test import *
from ctx import *
from ctx_test import *
from ctx_test_Python import *
from ctx_test2 import *
#from ctx_test import *
#from ctx_test_Python import *
from llm_test import *
from llm_test_Python import *
from memory_test import *
@@ -10,8 +11,8 @@ import sys
print(ctx_test_Controller_executeFunctions_set())
print(ctx_test_Controller_processQueue())
print(ctx_test_Python_Controller_registerFieldCallback_match())
print(ctx_test_Python_Controller_registerFieldCallback_mismatch())
print(ctx_test_Controller_registerFieldCallback_match())
print(ctx_test_Controller_registerFieldCallback_mismatch())
print(ctx_test_memoryContext_field())
print(ctx_test_memoryContext_setField())

View File

@@ -55,6 +55,7 @@ def translateStatement(s, state):
posColon = ss.find(": ")
posComma = ss.find(", ")
posComment = ss.find("# ")
posCtrl = ss.find("ctrl.")
posCtx = ss.find("c.")
posEqual = ss.find(" = ")
posFor = ss.find("for ")
@@ -97,6 +98,7 @@ def translateStatement(s, state):
# name = value -> auto name = value
if (
posCtx == -1 and
posCtrl == -1 and
posColon == -1 and
posOpenSquareBracket == -1 and
posEqual >= 0

View File

@@ -7,5 +7,6 @@ $TR $DIR/memory.py > $DIR/memory.cpp
$TR $DIR/memory_test.py > $DIR/memory_test.cpp
$TR $DIR/cli.py > $DIR/cli.cpp
$TR $DIR/cli_test.py > $DIR/cli_test.cpp
$TR $DIR/ctx_test.py > $DIR/ctx_test.cpp
$TR $DIR/llm_test.py > $DIR/llm_test.cpp
$DIR/cxx-headers