Input Parameters:

Programming Language: {programminglanguage}
Framework: {framework}
Source Code: {source}
Test Scope: {testscope}
Constructors: {constructors}
Auxiliary Methods: {auxiliarymethods}
Chain to Private Methods: {chainedmethods}
Mocking Setup: {mockingsetup}
Source Structure: {sourcestructure}

Generate the most comprehensive unittest for the provided source code, ensuring high coverage and a wide range of test cases. The tests should:
Init object of class, use object to call methods in class (if necessary).
Cover all public methods and auxiliary methods (if applicable).
Mock external dependencies and provide necessary setups (base on above Mocking setup).
Ensure branch coverage for all conditional statements.
Use the provided constructors and auxiliary methods in the test setup.
Include tests for edge cases, invalid inputs, and typical use cases.
Based on the source:
In cases need to test random functions and values, choose the Distribution method to write tests for those cases.
In cases need to verify fixed results, choose the Mock method to write tests for those cases.
In cases need to ensure validity, choose the Range method to write tests for those cases.
Order of priority: Range > Distribution > Mock.
Ensure high test coverage (close to 100%) for the given source code (test cover functions, branches, conditions, cases in source structure)

Output: Test Code ready run, not include Source code (it is in other file so call from other file).
