An unofficial collection of APIs used in FreeJam games and mods
Du kannst nicht mehr als 25 Themen auswählen Themen müssen entweder mit einem Buchstaben oder einer Ziffer beginnen. Sie können Bindestriche („-“) enthalten und bis zu 35 Zeichen lang sein.

123 Zeilen
4.3KB

  1. #[cfg(feature = "robocraft")]
  2. use libfj::robocraft;
  3. #[cfg(feature = "robocraft")]
  4. use std::convert::From;
  5. #[cfg(feature = "robocraft")]
  6. #[test]
  7. fn robocraft_factory_api_init() -> Result<(), ()> {
  8. robocraft::FactoryAPI::new();
  9. Ok(())
  10. }
  11. #[cfg(feature = "robocraft")]
  12. #[tokio::test]
  13. async fn robocraft_factory_default_query() -> Result<(), ()> {
  14. let api = robocraft::FactoryAPI::new();
  15. let result = api.list().await;
  16. assert!(result.is_ok());
  17. let robo_info = result.unwrap();
  18. assert_ne!(robo_info.response.roboshop_items.len(), 0);
  19. assert_eq!(robo_info.status_code, 200);
  20. for robot in &robo_info.response.roboshop_items {
  21. assert_ne!(robot.item_name, "");
  22. assert_ne!(robot.added_by, "");
  23. assert_ne!(robot.added_by_display_name, "");
  24. assert_ne!(robot.thumbnail, "");
  25. println!("FactoryRobotListInfo.to_string() -> `{}`", robot.to_string());
  26. }
  27. Ok(())
  28. }
  29. #[cfg(feature = "robocraft")]
  30. fn builder() -> robocraft::FactorySearchBuilder {
  31. robocraft::FactoryAPI::new().list_builder()
  32. }
  33. #[cfg(feature = "robocraft")]
  34. fn assert_factory_list(robo_info: robocraft::FactoryInfo<robocraft::RoboShopItemsInfo>) -> Result<(), ()> {
  35. assert_ne!(robo_info.response.roboshop_items.len(), 0);
  36. assert_eq!(robo_info.status_code, 200);
  37. for robot in &robo_info.response.roboshop_items {
  38. assert_ne!(robot.item_name, "");
  39. assert_ne!(robot.added_by, "");
  40. assert_ne!(robot.added_by_display_name, "");
  41. assert_ne!(robot.thumbnail, "");
  42. println!("FactoryRobotListInfo.to_string() -> `{}`", robot.to_string());
  43. }
  44. Ok(())
  45. }
  46. #[cfg(feature = "robocraft")]
  47. #[tokio::test]
  48. async fn robocraft_factory_custom_query() -> Result<(), ()> {
  49. let api = robocraft::FactoryAPI::new();
  50. let result = api.list_builder()
  51. .movement_or(robocraft::FactoryMovementType::Wheels)
  52. .weapon_or(robocraft::FactoryWeaponType::Laser)
  53. .page(2)
  54. .items_per_page(10)
  55. .send().await;
  56. assert!(result.is_ok());
  57. let robo_info = result.unwrap();
  58. assert_ne!(robo_info.response.roboshop_items.len(), 0);
  59. //assert_eq!(robo_info.response.roboshop_items.len(), 16); the API behaviour is weird, I swear it's not me!
  60. assert!(robo_info.response.roboshop_items.len() >= 10);
  61. assert_eq!(robo_info.status_code, 200);
  62. for robot in &robo_info.response.roboshop_items {
  63. assert_ne!(robot.item_name, "");
  64. assert_ne!(robot.added_by, "");
  65. assert_ne!(robot.added_by_display_name, "");
  66. assert_ne!(robot.thumbnail, "");
  67. println!("FactoryRobotListInfo.to_string() -> `{}`", robot.to_string());
  68. }
  69. Ok(())
  70. }
  71. #[cfg(feature = "robocraft")]
  72. //#[tokio::test]
  73. #[allow(dead_code)]
  74. async fn robocraft_factory_player_query() -> Result<(), ()> {
  75. let result = builder()
  76. .text("Zalera57".to_string()) // there is a featured robot by this user, so this should never fail
  77. .text_search_type(robocraft::FactoryTextSearchType::Player)
  78. .items_per_page(10)
  79. .send().await;
  80. assert!(result.is_ok());
  81. assert_factory_list(result.unwrap())
  82. }
  83. #[cfg(feature = "robocraft")]
  84. #[tokio::test]
  85. async fn robocraft_factory_robot_query() -> Result<(), ()> {
  86. let api = robocraft::FactoryAPI::new();
  87. let result = api.get(6478345 /* featured robot id */).await;
  88. assert!(result.is_ok());
  89. let bot_info = result.unwrap();
  90. assert_ne!(bot_info.response.item_name, "");
  91. assert_eq!(bot_info.response.item_id, 6478345);
  92. assert_ne!(bot_info.response.cube_data, "");
  93. assert_ne!(bot_info.response.colour_data, "");
  94. Ok(())
  95. }
  96. #[cfg(feature = "robocraft")]
  97. #[tokio::test]
  98. async fn robocraft_factory_robot_cubes() -> Result<(), ()> {
  99. let api = robocraft::FactoryAPI::new();
  100. let result = api.get(6478345 /* featured robot id */).await;
  101. assert!(result.is_ok());
  102. let bot_info = result.unwrap();
  103. let cubes = robocraft::Cubes::from(bot_info.clone());
  104. println!("cube count: {} or {}", cubes.provided_len, cubes.len());
  105. /*for c in cubes.into_iter() {
  106. println!("Cube.to_string() -> `{}`", c.to_string());
  107. }*/
  108. let (cube_d, colour_d) = cubes.dump();
  109. let cube_str = base64::encode(&cube_d);
  110. let colour_str = base64::encode(&colour_d);
  111. assert_eq!(cube_str, bot_info.response.cube_data);
  112. assert_eq!(colour_str, bot_info.response.colour_data);
  113. Ok(())
  114. }