code: def test_zero_rating_canary():
      reader = Reader(rating_scale=(-10, 10))
  
      ratings_dict = {
          "itemID": [0, 0, 0, 0, 1, 1],
          "userID": [0, 1, 2, 3, 3, 4],
          "rating": [-10, 10, 0, -5, 0, 5],
      }
      df = pd.DataFrame(ratings_dict)
      data = Dataset.load_from_df(
          df[["userID", "itemID", "rating"]], reader
      )
      trainset = data.build_full_trainset()
  
      # test ur and ir fields. Kind of OK, but the purpose of the test is
      # precisely to test what would happen if we removed them...
      assert trainset.ir[0] == [(0, -10), (1, 10), (2, 0), (3, -5)]
      assert trainset.ir[1] == [(3, 0), (4, 5)]
  
      assert trainset.ur[0] == [(0, -10)]
      assert trainset.ur[1] == [(0, 10)]
      assert trainset.ur[2] == [(0, 0)]
      assert trainset.ur[3] == [(0, -5), (1, 0)]
      assert trainset.ur[4] == [(1, 5)]
      print(trainset.ur)
  
      # ... so also test all_ratings which should be more reliable.
      all_ratings = list(trainset.all_ratings())
      assert (0, 0, -10) in all_ratings
      assert (1, 0, 10) in all_ratings
      assert (2, 0, 0) in all_ratings
      assert (3, 0, -5) in all_ratings
      assert (3, 1, 0) in all_ratings
      assert (4, 1, 5) in all_ratings
  
label_desc: Use image node_id 1 for calling a global function with example usage: test_zero_rating_canary() without return types