Add all unit tests

This commit is contained in:
2026-03-29 12:51:37 +11:00
parent e7612e421b
commit bf70cbd11b
13 changed files with 3191 additions and 0 deletions

View File

@@ -0,0 +1,400 @@
#include <iostream>
#include "ANSUtilities.h"
#include "ANSLLM.h"
#include "CkCrypt2.h"
#include <fstream>
#include <sstream>
#include <string>
#include <opencv2/opencv.hpp>
#include <CkHttp.h>
#include <CkJsonObject.h>
#include <CkHttpResponse.h>
#include <CkGlobal.h>
void EncrypyionExample(void)
{
std::string encryptedString = "";
//std::string inputKey = "mikael.holmstrom@anscenter.comAA";
std::string inputKey = "sale@anscenter.com.au";
std::string inputString = "https://anspushnotification.s3.ap-southeast-2.amazonaws.com/Events/20250113_154146_221140160_643.jpg";
AESEncryptionCpp(inputString.c_str(), inputKey.c_str(), encryptedString);
std::cout << "Encrypted String:" << encryptedString << std::endl;
//std::string NewEncryptionString = "DRqCU8fsgYZcwyjMdMwnEDStSVk13htAIznm1iee8ri0js1RJqN4/q7dMtK5HyQcOWPnQThN8971lFZwRB2baMOxhvyB/xyvP3mzjvPoTH98kvO1UxBltbi0xrlTKIO8xg1i7Iw07zhmSJzxRNz18A==";
std::string decryptedString = "";
AESDecryptionCpp(encryptedString.c_str(), inputKey.c_str(), decryptedString);
std::cout << "Decrypted String:" << decryptedString << std::endl;
}
int Test() {
ANSCENTER::ANSUtilities* Handle;
int result = CreateANSUtilityHandle(&Handle, "");
std::cout << "Intialisation:" << result << std::endl;
std::string arnTopic = "";
//CreateAWSSNSTopicCpp(&Handle, "MyTopicFromC",arnTopic);
//std::cout << "Topic ARN:" << arnTopic << std::endl;
// delete the topic
//arnTopic = "arn:aws:sns:ap-southeast-2:654654292871:MyTopicFromC";//arn:aws:sns:ap-southeast-2:654654292871:MyTopicFromC
//bool deleteResult= DeleteAWSSNSTopic(&Handle, arnTopic.c_str());
//std::cout << "Delete Topic:" << deleteResult << std::endl;
//+34623225024
// Send message
std::string messageId = "";
bool SendMessageResult = SendMessageToPhoneNumberCpp(&Handle, "+34623225024", "Hi Mr Mikael Holmstrom, this is the test message from ANS AI Box", messageId);
std::cout << "Send Message:" << SendMessageResult << std::endl;
std::cout << "Message ID:" << messageId << std::endl;
}
int uploadFileToGoogleStorage() {
ANSCENTER::ANSUtilities* Handle;
int result = CreateANSUtilityHandle(&Handle, "");
std::cout << "Intialisation:" << result << std::endl;
std::string googleTokenJsonfile = "C:\\Projects\\ANSVIS\\Documentation\\ImageStorage\\gcs_uploader_key.json";
std::string bucketName = "ansaibox-image-storage";
std::string objectName = "public-images/myTest2.jpg";
cv::Mat image = cv::imread("C:\\Programs\\DemoAssets\\NV\\test.jpg");
// Read json file to text first
std::ifstream file(googleTokenJsonfile); // Open the JSON file
if (!file) {
std::cerr << "Error: Cannot open file!" << std::endl;
return 1;
}
std::stringstream buffer;
buffer << file.rdbuf(); // Read file content into buffer
std::string jsonString = buffer.str(); // Convert buffer to std::string
std::cout << "JSON Content:\n" << jsonString << std::endl;
bool authResult = AuthenticateGCS(&Handle, jsonString.c_str());
std::cout << "Authenticate:" << authResult << std::endl;
bool uploadResult = UploadImageToGCS(& Handle, bucketName.c_str(), objectName.c_str(), image);
std::cout << "Upload Image:" << uploadResult << std::endl;
ReleaseANSUtilityHandle(&Handle);
}
void SendEmailExample(void)
{
std::string smtpServer = "smtp.office365.com";
int smtpPort = 587;
std::string smtpUser = "noreply@anscenter.com";
std::string smtpPassword = "PW";//
std::string subjectContent = "This is the test";
std::string bodyHTMLContent = "<html> <body><b>Test Email</b> <img src = \"http://www.chilkatsoft.com/images/dude.gif\"></body></html>";
std::string bodyTextContent = "";
std::string fromEmailSender = "noreply@anscenter.com";
std::string toEmails = "nghia.nguyen@anscenter.com;kate.truong@anscenter.com";
std::string ccEmails = "support@anscenter.com;sale@anscenter.com";
std::string bccEmails = "admin@anscenter.com";
int resultSent = SendEmail(smtpServer.c_str(), smtpPort, smtpUser.c_str(), smtpPassword.c_str(),
subjectContent.c_str(), bodyHTMLContent.c_str(), bodyTextContent.c_str(), fromEmailSender.c_str(),
toEmails.c_str(), ccEmails.c_str(), bccEmails.c_str());
std::cout << "Send Email Result:" << resultSent << std::endl;
}
int ANSLLMTest() {
std::cout << "Running ANSLLM Test..." << std::endl;
ANSCENTER::ANSLLM ansllm;
std::string licenseKey = "";
std::string apiKey = "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";
// Initialize with license key
ansllm.Initialize(licenseKey);
ansllm.SetLLMProvider("openai");
ansllm.SetApiKey(apiKey);
//std::vector<std::string> modelList = ansllm.GetModelList();
//std::cout << "Available Models:" << std::endl;
//for (const auto& model : modelList) {
// std::cout << model << std::endl;
//}
// Set model
ansllm.SetModel("gpt-5.2");
ansllm.CreateConversation("You are a helpful assistant.", "Respond only with markdown.", "TestConversation");
ansllm.InputAddText("Say Hello.");
std::string response = ansllm.Ask("text");
std::cout << "Response from ANSLLM: " << response << std::endl;
// ask others
std::string prompt2 = "Please tell me a person whose name is Sophie";
ansllm.InputAddText(prompt2);
std::string response2 = ansllm.Ask("text");
std::cout << "Response from ANSLLM: " << response2 << std::endl;
ansllm.InputAddText("Describe what you see in the following image.");
ansllm.InputAddImageUrl("https://www.chilkatsoft.com/images/starfish.jpg", "");
std::string response3 = ansllm.Ask("text");
std::cout << "Response from ANSLLM: " << response3 << std::endl;
return 0;
}
int ANSAWSTest() {
std::cout << "Running ANSAWS Test..." << std::endl;
ANSCENTER::ANSAWSS3* awsHandle = nullptr;
// Initialize AWS S3 handle
if (CreateANSAWSHandle(&awsHandle,"") != 1) {
std::cerr << "Failed to create AWS S3 handle." << std::endl;
return 1;
}
std::string baseDomain = "amazonaws.com";
std::string bucketRegion = "ap-southeast-2";
std::string serviceName = "s3";
std::string bucketName = "anspushnotification";
int port = 443;
bool bTls = true;
bool autoReconnect = true;
// Connect to AWS S3
int awsPath = 0;
if (ConnectANSAWSHandle(&awsHandle, baseDomain.c_str(), bucketRegion.c_str(), serviceName.c_str(), port, bTls, autoReconnect, &awsPath) == 0) {
std::cerr << "Failed to connect to AWS S3." << std::endl;
ReleaseANSAWSHandle(&awsHandle);
return 1;
}
std::cout << "Connected. AWS path style: " << (awsPath ? "true" : "false") << std::endl;
// Set authentication
std::string accessKey = "AKIAZQ3DPYODSHZCECS4";
std::string secretKey = "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";
if (SetAuthenticationANSAWSHandle(&awsHandle, accessKey.c_str(), secretKey.c_str()) != 1) {
std::cerr << "Failed to set AWS S3 authentication." << std::endl;
ReleaseANSAWSHandle(&awsHandle);
return 1;
}
// Upload a jpeg image to bucket
std::string jpegFilePath = "E:\\Programs\\DemoAssets\\NV\\Test.jpg";
std::string objectName = "test/test.jpg";
std::string uploadedUrl;
while (1) {
if (UploadBinaryDataANSAWSHandle_CPP(&awsHandle, bucketName.c_str(), jpegFilePath.c_str(), uploadedUrl) != 1) {
std::cerr << "Failed to upload JPEG image to AWS S3." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(1)); // Wait before retrying
}
else {
std::cout << "Successfully uploaded JPEG image to AWS S3." << std::endl;
break;
}
}
std::cout << "Uploaded to: " << uploadedUrl << std::endl;
//// List buckets
//std::string bucketList = "";
//if (ListBucketANSAWSHandle_CPP(&awsHandle, bucketList) != 1) {
// std::cerr << "Failed to list AWS S3 buckets." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//std::cout << "Buckets in AWS S3:" << std::endl;
//std::cout << bucketList << std::endl;
//// list objects in a bucket
//std::string bucketName = "anspushnotification";
//std::string prefix = "Events/ee2ejdgefcjl7j6ruhvsjlaea/";
//std::string bucketObjectList = "";
//if (ListBucketObjectsWithPrefixANSAWSHandle_CPP(&awsHandle, bucketName.c_str(), prefix.c_str(), bucketObjectList) != 1) {
// std::cerr << "Failed to list AWS S3 bucket objects." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//std::cout << "Bucket objects in AWS S3:" << std::endl;
//std::cout << bucketObjectList << std::endl;
//// Create a new bucket
//std::string newBucketName = "my-test-bucket-a3f9d2c1w2";
//std::string bucketPrefix = "test-prefix/";
//if (CreateBucketANSAWSHandle(&awsHandle, newBucketName.c_str()) != 1) {
// std::cerr << "Failed to create AWS S3 bucket." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//if (CreateBucketPrefixANSAWSHandle(&awsHandle, newBucketName.c_str(),bucketPrefix.c_str()) != 1) {
// std::cerr << "Failed to create AWS S3 bucket prefix." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//// Delete the bucket prefix
//std::string deleteBucketName = "my-test-bucket-a3f9d2c1";
//if (DeleteBucketPrefixANSAWSHandle(&awsHandle, newBucketName.c_str(), bucketPrefix.c_str()) != 1) {
// std::cerr << "Failed to delete AWS S3 bucket." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
// Delete the bucket
//if (DeleteBucketANSAWSHandle(&awsHandle, newBucketName.c_str()) != 1) {
// std::cerr << "Failed to delete AWS S3 bucket." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
// Download an object from bucket
//std::string objectName = "testevent/test01.jpg";
//std::string downloadFilePath = "E:\\Programs\\DemoAssets\\Images";
//if (DownloadFileStreamANSAWSHandle(&awsHandle, bucketName.c_str(), objectName.c_str(), downloadFilePath.c_str()) != 1) {
// std::cerr << "Failed to download AWS S3 bucket object." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//
// Clean up
ReleaseANSAWSHandle(&awsHandle);
return 0;
}
int ANSFTechMinIOTest() {
std::cout << "Running ANSFTechMinIO Test..." << std::endl;
ANSCENTER::ANSAWSS3* awsHandle = nullptr;
// Initialize AWS S3 handle
if (CreateANSAWSHandle(&awsHandle, "") != 1) {
std::cerr << "Failed to create AWS S3 handle." << std::endl;
return 1;
}
std::string baseDomain = "https://minio.dev.ftech.ai";
std::string bucketRegion = "vn1";
std::string serviceName = "s3";
std::string bucketName = "aicamera";
int port = 443;
bool bTls = true;
bool autoReconnect = true;
// Connect to AWS S3
int awsPath = 0;
if (ConnectANSAWSHandle(&awsHandle, baseDomain.c_str(), bucketRegion.c_str(), serviceName.c_str(), port, bTls, autoReconnect, &awsPath) == 0) {
std::cerr << "Failed to connect to AWS S3." << std::endl;
ReleaseANSAWSHandle(&awsHandle);
return 1;
}
// Set authentication
std::string accessKey = "aicamerapush";
std::string secretKey = "88fO8Y3EpMFMG1HFCCcfCE4cWh0k5KKZ";
if (SetAuthenticationANSAWSHandle(&awsHandle, accessKey.c_str(), secretKey.c_str()) != 1) {
std::cerr << "Failed to set AWS S3 authentication." << std::endl;
ReleaseANSAWSHandle(&awsHandle);
return 1;
}
// Upload a jpeg image to bucket
std::string jpegFilePath = "E:\\Programs\\DemoAssets\\NV\\Test.jpg";
std::string objectName = "test1.jpg";
std::string uploadedUrl;
if (UploadBinaryDataANSAWSHandle_CPP(&awsHandle, bucketName.c_str(), jpegFilePath.c_str(), uploadedUrl)!= 1) {
std::cerr << "Failed to upload JPEG image to AWS S3." << std::endl;
ReleaseANSAWSHandle(&awsHandle);
return 1;
}
// List buckets
//std::string bucketList = "";
//if (ListBucketANSAWSHandle_CPP(&awsHandle, bucketList) != 1) {
// std::cerr << "Failed to list AWS S3 buckets." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//std::cout << "Buckets in AWS S3:" << std::endl;
//std::cout << bucketList << std::endl;
// list objects in a bucket
//std::string bucketName = "anspushnotification";
//std::string prefix = "Events/ee2ejdgefcjl7j6ruhvsjlaea/";
//std::string bucketObjectList = "";
//if (ListBucketObjectsWithPrefixANSAWSHandle_CPP(&awsHandle, bucketName.c_str(), prefix.c_str(), bucketObjectList) != 1) {
// std::cerr << "Failed to list AWS S3 bucket objects." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//std::cout << "Bucket objects in AWS S3:" << std::endl;
//std::cout << bucketObjectList << std::endl;
// Create a new bucket
//std::string newBucketName = "my-test-bucket-a3f9d2c1w2";
//std::string bucketPrefix = "test-prefix/";
//if (CreateBucketANSAWSHandle(&awsHandle, newBucketName.c_str()) != 1) {
// std::cerr << "Failed to create AWS S3 bucket." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//if (CreateBucketPrefixANSAWSHandle(&awsHandle, newBucketName.c_str(),bucketPrefix.c_str()) != 1) {
// std::cerr << "Failed to create AWS S3 bucket prefix." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
//// Delete the bucket prefix
//std::string deleteBucketName = "my-test-bucket-a3f9d2c1";
//if (DeleteBucketPrefixANSAWSHandle(&awsHandle, newBucketName.c_str(), bucketPrefix.c_str()) != 1) {
// std::cerr << "Failed to delete AWS S3 bucket." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
// Delete the bucket
//if (DeleteBucketANSAWSHandle(&awsHandle, newBucketName.c_str()) != 1) {
// std::cerr << "Failed to delete AWS S3 bucket." << std::endl;
// ReleaseANSAWSHandle(&awsHandle);
// return 1;
//}
// Clean up
ReleaseANSAWSHandle(&awsHandle);
return 0;
}
int ANSLLMOllamaTest() {
std::cout << "Running ANSLLM Ollama Test..." << std::endl;
ANSCENTER::ANSLLM ansllm;
std::string licenseKey = "";
// Initialize with local Ollama enabled
ansllm.Initialize(licenseKey, true);
// Set the Ollama model (must be already pulled via 'ollama pull llama3.2')
ansllm.SetModel("llama3.2");
ansllm.CreateConversation("You are a helpful assistant.", "Respond only with markdown.", "TestConversation");
ansllm.InputAddText("Why is the sky blue?");
std::string response = ansllm.Ask("text");
std::cout << "Response from ANSLLM (Ollama): " << response << std::endl;
// Ask another question
ansllm.InputAddText("Say Hello.");
std::string response2 = ansllm.Ask("text");
std::cout << "Response from ANSLLM (Ollama): " << response2 << std::endl;
return 0;
}
int main()
{
ANSLLMOllamaTest();
//ANSAWSTest();
//ANSFTechMinIOTest();
//ANSAWSTest();
//ANSLLMTest();
//SendEmailExample();
//uploadFileToGoogleStorage();
// EncrypyionExample();
}