code: def test_geom_basics():
      class geom_abc(geom):
          DEFAULT_AES = {"color": None}
          DEFAULT_PARAMS = {"stat": "identity", "position": "identity"}
  
      g = geom_abc(data=data)
      assert g.data is data
  
      g = geom_abc(data)
      assert g.data is data
  
      # geom data should not mess with the main data
      data_copy = data.copy()
      p = ggplot(data, aes("col", "mpg")) + geom_abc(data_copy)
      assert p.data is data
      assert p.layers[0].geom.data is data_copy
  
      g = geom_abc(aes(color="col1"))
      assert g.mapping["color"] == "col1"
  
      g = geom_abc(mapping=aes(color="col2"))
      assert g.mapping["color"] == "col2"
  
      # Multiple mappings
      with pytest.raises(TypeError):
          g = geom_abc(aes(color="col1"), aes(color="co1"))
  
      # setting, not mapping
      g = geom_abc(color="blue")
      assert g.aes_params["color"] == "blue"
  
imports: import pandas
  import pytest
  from plotnine import aes, geom_point, ggplot, stat_identity
  from plotnine.exceptions import PlotnineError
  from plotnine.geoms.geom import geom
label_desc: Use image node_id 1 for calling a global function with example usage: test_geom_basics() without return types