### Question:
StructuredDataSource implements DataSource { @Override public DataSourceType getDataSourceType() { return this.dataSourceType; } StructuredDataSource(
      String sqlExpression,
      final String datasourceName,
      final Schema schema,
      final Field keyField,
      final TimestampExtractionPolicy timestampExtractionPolicy,
      final DataSourceType dataSourceType,
      final KsqlTopic ksqlTopic
  ); @Override String getName(); @Override DataSourceType getDataSourceType(); static DataSourceType getDataSourceType(String dataSourceTypeName); Schema getSchema(); Field getKeyField(); KsqlTopic getKsqlTopic(); TimestampExtractionPolicy getTimestampExtractionPolicy(); abstract StructuredDataSource copy(); abstract StructuredDataSource cloneWithTimeKeyColumns(); abstract StructuredDataSource cloneWithTimeExtractionPolicy(
      final TimestampExtractionPolicy policy); String getTopicName(); abstract QueryId getPersistentQueryId(); String getSqlExpression();  }### Answer:
@Test public void testShouldGetStreamDataSourceType() { assertEquals(DataSource.DataSourceType.KSTREAM, StructuredDataSource.getDataSourceType("STREAM")); }
@Test public void testShouldGetTableDataSourceType() { assertEquals(DataSource.DataSourceType.KTABLE, StructuredDataSource.getDataSourceType("TABLE")); }