code: def test_incorrect_input_features_config():
      config = {
          "input_features": [
              category_feature(
                  preprocessing={"normalization": "zscore"}
              ),
          ],
          "output_features": [binary_feature()],
      }
  
      # TODO(ksbrar): Circle back after discussing whether additional properties should be allowed long-term.
      # # Not a preprocessing param for category feature
      # with pytest.raises(ValidationError):
      #     check_schema(config)
  
      config = {
          "input_features": [
              text_feature(preprocessing={"padding_symbol": 0}),
          ],
          "output_features": [binary_feature()],
      }
  
      # Incorrect type for padding_symbol preprocessing param
      with pytest.raises(ConfigValidationError):
          check_schema(config)
  
      config = {
          "input_features": [
              binary_feature(),
          ],
          "output_features": [binary_feature()],
      }
      del config["input_features"][0]["type"]
  
      # No type
      with pytest.raises(ConfigValidationError):
          check_schema(config)
  
file_path: ludwig/tests/ludwig/config_validation/test_validate_config_features.py
imports: import pytest
  from ludwig.config_validation.validation import check_schema
  from ludwig.error import ConfigValidationError
  from tests.integration_tests.utils import binary_feature, category_feature, number_feature, text_feature
label_desc: Use image node_id 2 for calling a global function with example usage: test_incorrect_input_features_config() without return types