@@ -755,3 +755,63 @@ mod bundle_processing_tests {
755755 ) ;
756756 }
757757}
758+
759+ #[ cfg( test) ]
760+ mod consensus_depth_tests {
761+ use super :: * ;
762+ use soroban_sdk:: testutils:: Address as _;
763+
764+ fn setup_env ( ) -> Env {
765+ Env :: default ( )
766+ }
767+
768+ fn populate_cache ( env : & Env , count : u32 ) {
769+ let mut participants: Vec < Address > = Vec :: new ( env) ;
770+ for _ in 0 ..count {
771+ let node = Address :: generate ( env) ;
772+ participants. push_back ( node) ;
773+ }
774+ env. storage ( )
775+ . temporary ( )
776+ . set ( & CONSENSUS_CACHE_KEY , & participants) ;
777+ }
778+
779+ #[ test]
780+ fn test_empty_cache_rejected ( ) {
781+ let env = setup_env ( ) ;
782+ let result = check_consensus_depth ( & env) ;
783+ assert_eq ! ( result, Err ( ContractError :: IncompleteQuorum ) ) ;
784+ }
785+
786+ #[ test]
787+ fn test_one_validator_rejected ( ) {
788+ let env = setup_env ( ) ;
789+ populate_cache ( & env, 1 ) ;
790+ let result = check_consensus_depth ( & env) ;
791+ assert_eq ! ( result, Err ( ContractError :: IncompleteQuorum ) ) ;
792+ }
793+
794+ #[ test]
795+ fn test_two_validators_rejected ( ) {
796+ let env = setup_env ( ) ;
797+ populate_cache ( & env, 2 ) ;
798+ let result = check_consensus_depth ( & env) ;
799+ assert_eq ! ( result, Err ( ContractError :: IncompleteQuorum ) ) ;
800+ }
801+
802+ #[ test]
803+ fn test_three_validators_accepted ( ) {
804+ let env = setup_env ( ) ;
805+ populate_cache ( & env, 3 ) ;
806+ let result = check_consensus_depth ( & env) ;
807+ assert ! ( result. is_ok( ) ) ;
808+ }
809+
810+ #[ test]
811+ fn test_many_validators_accepted ( ) {
812+ let env = setup_env ( ) ;
813+ populate_cache ( & env, 10 ) ;
814+ let result = check_consensus_depth ( & env) ;
815+ assert ! ( result. is_ok( ) ) ;
816+ }
817+ }
0 commit comments