@@ -1544,4 +1544,170 @@ mod tests {
15441544 let result2 = config. validate ( ) ;
15451545 assert ! ( result2. is_err( ) ) ;
15461546 }
1547+
1548+ #[ test]
1549+ fn test_task_progress_message_new ( ) {
1550+ let msg = TaskProgressMessage :: new (
1551+ "test-challenge" . to_string ( ) ,
1552+ "agent-hash" . to_string ( ) ,
1553+ "eval-123" . to_string ( ) ,
1554+ "task-1" . to_string ( ) ,
1555+ 1 ,
1556+ 10 ,
1557+ true ,
1558+ 0.95 ,
1559+ 1500 ,
1560+ 0.002 ,
1561+ None ,
1562+ "validator-key" . to_string ( ) ,
1563+ ) ;
1564+ assert_eq ! ( msg. challenge_id, "test-challenge" ) ;
1565+ assert_eq ! ( msg. task_index, 1 ) ;
1566+ assert_eq ! ( msg. total_tasks, 10 ) ;
1567+ assert ! ( msg. passed) ;
1568+ assert_eq ! ( msg. score, 0.95 ) ;
1569+ assert ! ( msg. timestamp > 0 ) ;
1570+ }
1571+
1572+ #[ test]
1573+ fn test_challenge_container_config_with_resources ( ) {
1574+ let config =
1575+ ChallengeContainerConfig :: new ( "Test" , "ghcr.io/platformnetwork/test:v1" , 1 , 0.5 )
1576+ . with_resources ( 4.0 , 8192 , true ) ;
1577+
1578+ assert_eq ! ( config. cpu_cores, 4.0 ) ;
1579+ assert_eq ! ( config. memory_mb, 8192 ) ;
1580+ assert ! ( config. gpu_required) ;
1581+ }
1582+
1583+ #[ test]
1584+ fn test_challenge_container_config_with_timeout ( ) {
1585+ let config =
1586+ ChallengeContainerConfig :: new ( "Test" , "ghcr.io/platformnetwork/test:v1" , 1 , 0.5 )
1587+ . with_timeout ( 7200 ) ;
1588+
1589+ assert_eq ! ( config. timeout_secs, 7200 ) ;
1590+ }
1591+
1592+ #[ test]
1593+ fn test_mechanism_weight_config_new ( ) {
1594+ let config = MechanismWeightConfig :: new ( 5 ) ;
1595+ assert_eq ! ( config. mechanism_id, 5 ) ;
1596+ assert_eq ! ( config. base_burn_rate, 0.0 ) ;
1597+ assert ! ( config. equal_distribution) ;
1598+ assert ! ( config. active) ;
1599+ }
1600+
1601+ #[ test]
1602+ fn test_mechanism_weight_config_with_burn_rate ( ) {
1603+ let config = MechanismWeightConfig :: new ( 1 ) . with_burn_rate ( 0.15 ) ;
1604+ assert_eq ! ( config. base_burn_rate, 0.15 ) ;
1605+ }
1606+
1607+ #[ test]
1608+ fn test_mechanism_weight_config_with_max_cap ( ) {
1609+ let config = MechanismWeightConfig :: new ( 1 ) . with_max_cap ( 0.8 ) ;
1610+ assert_eq ! ( config. max_weight_cap, 0.8 ) ;
1611+ }
1612+
1613+ #[ test]
1614+ fn test_challenge_weight_allocation_new ( ) {
1615+ let challenge_id = ChallengeId :: new ( ) ;
1616+ let allocation = ChallengeWeightAllocation :: new ( challenge_id. clone ( ) , 1 , 0.7 ) ;
1617+ assert_eq ! ( allocation. challenge_id, challenge_id) ;
1618+ assert_eq ! ( allocation. mechanism_id, 1 ) ;
1619+ assert_eq ! ( allocation. weight_ratio, 0.7 ) ;
1620+ assert ! ( allocation. active) ;
1621+ }
1622+
1623+ #[ test]
1624+ fn test_challenge_config_validate_empty_docker_image ( ) {
1625+ let config = ChallengeContainerConfig :: new (
1626+ "Test" , "" , // Empty docker image
1627+ 1 , 0.5 ,
1628+ ) ;
1629+ let result = config. validate ( ) ;
1630+ assert ! ( result. is_err( ) ) ;
1631+ assert ! ( result. unwrap_err( ) . contains( "Docker image cannot be empty" ) ) ;
1632+ }
1633+
1634+ #[ test]
1635+ fn test_challenge_config_validate_timeout_too_short ( ) {
1636+ let mut config =
1637+ ChallengeContainerConfig :: new ( "Test" , "ghcr.io/platformnetwork/test:v1" , 1 , 0.5 ) ;
1638+ config. timeout_secs = 30 ; // Less than 60
1639+ let result = config. validate ( ) ;
1640+ assert ! ( result. is_err( ) ) ;
1641+ assert ! ( result. unwrap_err( ) . contains( "at least 60 seconds" ) ) ;
1642+ }
1643+
1644+ #[ test]
1645+ fn test_challenge_config_validate_timeout_too_long ( ) {
1646+ let mut config =
1647+ ChallengeContainerConfig :: new ( "Test" , "ghcr.io/platformnetwork/test:v1" , 1 , 0.5 ) ;
1648+ config. timeout_secs = 90000 ; // More than 86400
1649+ let result = config. validate ( ) ;
1650+ assert ! ( result. is_err( ) ) ;
1651+ assert ! ( result. unwrap_err( ) . contains( "cannot exceed 24 hours" ) ) ;
1652+ }
1653+
1654+ #[ test]
1655+ fn test_challenge_config_validate_cpu_cores_invalid ( ) {
1656+ let mut config =
1657+ ChallengeContainerConfig :: new ( "Test" , "ghcr.io/platformnetwork/test:v1" , 1 , 0.5 ) ;
1658+ config. cpu_cores = 0.1 ; // Less than 0.5
1659+ let result = config. validate ( ) ;
1660+ assert ! ( result. is_err( ) ) ;
1661+ assert ! ( result. unwrap_err( ) . contains( "CPU cores" ) ) ;
1662+
1663+ config. cpu_cores = 100.0 ; // More than 64
1664+ let result = config. validate ( ) ;
1665+ assert ! ( result. is_err( ) ) ;
1666+ assert ! ( result. unwrap_err( ) . contains( "CPU cores" ) ) ;
1667+ }
1668+
1669+ #[ test]
1670+ fn test_challenge_config_validate_memory_invalid ( ) {
1671+ let mut config =
1672+ ChallengeContainerConfig :: new ( "Test" , "ghcr.io/platformnetwork/test:v1" , 1 , 0.5 ) ;
1673+ config. memory_mb = 256 ; // Less than 512
1674+ let result = config. validate ( ) ;
1675+ assert ! ( result. is_err( ) ) ;
1676+ assert ! ( result. unwrap_err( ) . contains( "Memory" ) ) ;
1677+
1678+ config. memory_mb = 200000 ; // More than 131072
1679+ let result = config. validate ( ) ;
1680+ assert ! ( result. is_err( ) ) ;
1681+ assert ! ( result. unwrap_err( ) . contains( "Memory" ) ) ;
1682+ }
1683+
1684+ #[ test]
1685+ fn test_is_development_mode ( ) {
1686+ // Test the development mode check
1687+ // Save current state and test both paths
1688+ let original = std:: env:: var ( "DEVELOPMENT_MODE" ) . ok ( ) ;
1689+
1690+ // Test with DEVELOPMENT_MODE unset
1691+ std:: env:: remove_var ( "DEVELOPMENT_MODE" ) ;
1692+ assert ! ( !is_development_mode( ) ) ;
1693+
1694+ // Test with DEVELOPMENT_MODE set
1695+ std:: env:: set_var ( "DEVELOPMENT_MODE" , "1" ) ;
1696+ assert ! ( is_development_mode( ) ) ;
1697+
1698+ // Restore original state
1699+ match original {
1700+ Some ( val) => std:: env:: set_var ( "DEVELOPMENT_MODE" , val) ,
1701+ None => std:: env:: remove_var ( "DEVELOPMENT_MODE" ) ,
1702+ }
1703+ }
1704+
1705+ #[ test]
1706+ fn test_mechanism_weight_config_default ( ) {
1707+ let config = MechanismWeightConfig :: default ( ) ;
1708+ assert_eq ! ( config. mechanism_id, 0 ) ;
1709+ assert_eq ! ( config. base_burn_rate, 0.0 ) ;
1710+ assert ! ( config. equal_distribution) ;
1711+ assert ! ( config. active) ;
1712+ }
15471713}
0 commit comments