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.

101 Zeilen
3.5KB

  1. #[cfg(all(feature = "simple", feature = "robocraft"))]
  2. use libfj::robocraft_simple;
  3. #[cfg(all(feature = "simple", feature = "robocraft"))]
  4. use libfj::robocraft;
  5. #[cfg(all(feature = "simple", feature = "robocraft"))]
  6. #[test]
  7. fn robocraft_factory_api_init_simple() -> Result<(), ()> {
  8. robocraft_simple::FactoryAPI::new();
  9. Ok(())
  10. }
  11. #[cfg(all(feature = "simple", feature = "robocraft"))]
  12. fn builder() -> robocraft_simple::FactorySearchBuilder {
  13. robocraft_simple::FactoryAPI::new().list_builder()
  14. }
  15. #[cfg(all(feature = "simple", feature = "robocraft"))]
  16. fn assert_factory_list(robo_info: robocraft::FactoryInfo<robocraft::RoboShopItemsInfo>) -> Result<(), ()> {
  17. assert_ne!(robo_info.response.roboshop_items.len(), 0);
  18. assert_eq!(robo_info.status_code, 200);
  19. for robot in &robo_info.response.roboshop_items {
  20. assert_ne!(robot.item_name, "");
  21. assert_ne!(robot.added_by, "");
  22. assert_ne!(robot.added_by_display_name, "");
  23. assert_ne!(robot.thumbnail, "");
  24. println!("FactoryRobotListInfo.to_string() -> `{}`", robot.to_string());
  25. }
  26. Ok(())
  27. }
  28. #[test]
  29. #[cfg(all(feature = "simple", feature = "robocraft"))]
  30. fn robocraft_factory_query_simple() -> Result<(), ()> {
  31. let result = robocraft_simple::FactoryAPI::new().list();
  32. assert!(result.is_ok());
  33. let robo_info = result.unwrap();
  34. assert_factory_list(robo_info)?;
  35. Ok(())
  36. }
  37. #[test]
  38. #[cfg(all(feature = "simple", feature = "robocraft"))]
  39. fn robocraft_factory_custom_query_simple() -> Result<(), ()> {
  40. let result = builder()
  41. .movement_or(robocraft::FactoryMovementType::Wheels)
  42. .weapon_or(robocraft::FactoryWeaponType::Laser)
  43. .page(2)
  44. .items_per_page(10)
  45. .send();
  46. assert!(result.is_ok());
  47. let robo_info = result.unwrap();
  48. assert_ne!(robo_info.response.roboshop_items.len(), 0);
  49. //assert_eq!(robo_info.response.roboshop_items.len(), 16); the API behaviour is weird, I swear it's not me!
  50. assert!(robo_info.response.roboshop_items.len() >= 10);
  51. assert_eq!(robo_info.status_code, 200);
  52. for robot in &robo_info.response.roboshop_items {
  53. assert_ne!(robot.item_name, "");
  54. assert_ne!(robot.added_by, "");
  55. assert_ne!(robot.added_by_display_name, "");
  56. assert_ne!(robot.thumbnail, "");
  57. println!("FactoryRobotListInfo.to_string() -> `{}`", robot.to_string());
  58. }
  59. Ok(())
  60. }
  61. #[test]
  62. #[cfg(all(feature = "simple", feature = "robocraft"))]
  63. fn robocraft_factory_player_query() -> Result<(), ()> {
  64. // hard-coding a user inevitably fails, so that's grab one from the front page
  65. let username = robocraft_simple::FactoryAPI::new()
  66. .list()
  67. .unwrap() // covered by another test case
  68. .response
  69. .roboshop_items[0]
  70. .added_by
  71. .clone();
  72. let result = builder()
  73. .text(username) // there is a featured robot by this user, so this should never fail
  74. .text_search_type(robocraft::FactoryTextSearchType::Player)
  75. .items_per_page(10)
  76. .send();
  77. assert!(result.is_ok());
  78. assert_factory_list(result.unwrap())
  79. }
  80. #[test]
  81. #[cfg(all(feature = "simple", feature = "robocraft"))]
  82. fn robocraft_factory_robot_query() -> Result<(), ()> {
  83. let api = robocraft_simple::FactoryAPI::new();
  84. let result = api.get(6478345 /* featured robot id*/);
  85. assert!(result.is_ok());
  86. let bot_info = result.unwrap();
  87. assert_ne!(bot_info.response.item_name, "");
  88. assert_eq!(bot_info.response.item_id, 6478345);
  89. assert_ne!(bot_info.response.cube_data, "");
  90. assert_ne!(bot_info.response.colour_data, "");
  91. Ok(())
  92. }