| from unittest import TestCase |
|
|
| from autogpt.promptgenerator import PromptGenerator |
|
|
|
|
| class TestPromptGenerator(TestCase): |
| """ |
| Test cases for the PromptGenerator class, which is responsible for generating |
| prompts for the AI with constraints, commands, resources, and performance evaluations. |
| """ |
|
|
| @classmethod |
| def setUpClass(cls): |
| """ |
| Set up the initial state for each test method by creating an instance of PromptGenerator. |
| """ |
| cls.generator = PromptGenerator() |
|
|
| |
| def test_add_constraint(self): |
| """ |
| Test if the add_constraint() method adds a constraint to the generator's constraints list. |
| """ |
| constraint = "Constraint1" |
| self.generator.add_constraint(constraint) |
| self.assertIn(constraint, self.generator.constraints) |
|
|
| |
| def test_add_command(self): |
| """ |
| Test if the add_command() method adds a command to the generator's commands list. |
| """ |
| command_label = "Command Label" |
| command_name = "command_name" |
| args = {"arg1": "value1", "arg2": "value2"} |
| self.generator.add_command(command_label, command_name, args) |
| command = { |
| "label": command_label, |
| "name": command_name, |
| "args": args, |
| } |
| self.assertIn(command, self.generator.commands) |
|
|
| def test_add_resource(self): |
| """ |
| Test if the add_resource() method adds a resource to the generator's resources list. |
| """ |
| resource = "Resource1" |
| self.generator.add_resource(resource) |
| self.assertIn(resource, self.generator.resources) |
|
|
| def test_add_performance_evaluation(self): |
| """ |
| Test if the add_performance_evaluation() method adds an evaluation to the generator's |
| performance_evaluation list. |
| """ |
| evaluation = "Evaluation1" |
| self.generator.add_performance_evaluation(evaluation) |
| self.assertIn(evaluation, self.generator.performance_evaluation) |
|
|
| def test_generate_prompt_string(self): |
| """ |
| Test if the generate_prompt_string() method generates a prompt string with all the added |
| constraints, commands, resources, and evaluations. |
| """ |
| |
| constraints = ["Constraint1", "Constraint2"] |
| commands = [ |
| { |
| "label": "Command1", |
| "name": "command_name1", |
| "args": {"arg1": "value1"}, |
| }, |
| { |
| "label": "Command2", |
| "name": "command_name2", |
| "args": {}, |
| }, |
| ] |
| resources = ["Resource1", "Resource2"] |
| evaluations = ["Evaluation1", "Evaluation2"] |
|
|
| |
| for constraint in constraints: |
| self.generator.add_constraint(constraint) |
| for command in commands: |
| self.generator.add_command( |
| command["label"], command["name"], command["args"] |
| ) |
| for resource in resources: |
| self.generator.add_resource(resource) |
| for evaluation in evaluations: |
| self.generator.add_performance_evaluation(evaluation) |
|
|
| |
| prompt_string = self.generator.generate_prompt_string() |
| self.assertIsNotNone(prompt_string) |
|
|
| |
| for constraint in constraints: |
| self.assertIn(constraint, prompt_string) |
| for command in commands: |
| self.assertIn(command["name"], prompt_string) |
| for key, value in command["args"].items(): |
| self.assertIn(f'"{key}": "{value}"', prompt_string) |
| for resource in resources: |
| self.assertIn(resource, prompt_string) |
| for evaluation in evaluations: |
| self.assertIn(evaluation, prompt_string) |
|
|
| self.assertIn("constraints", prompt_string.lower()) |
| self.assertIn("commands", prompt_string.lower()) |
| self.assertIn("resources", prompt_string.lower()) |
| self.assertIn("performance evaluation", prompt_string.lower()) |
|
|