@@ -8,79 +8,83 @@ package org.apache.spark.sql.flint.datatype
8
8
import org .scalatest .matchers .should .Matchers
9
9
10
10
import org .apache .spark .FlintSuite
11
+ import org .apache .spark .sql .flint .datatype .FlintMetadataExtensions .{MetadataBuilderExtension , MetadataExtension }
11
12
import org .apache .spark .sql .types ._
12
13
13
- class FlintMetadataHelperSuite extends FlintSuite with Matchers {
14
+ class FlintMetadataExtensionsSuite extends FlintSuite with Matchers {
14
15
15
16
test(" isTextField returns true when osType is text" ) {
16
17
val builder = new MetadataBuilder ()
17
- .putString(FlintMetadataHelper .OS_TYPE_KEY , FlintMetadataHelper .TEXT_TYPE )
18
+ .putString(FlintMetadataExtensions .OS_TYPE_KEY , FlintMetadataExtensions .TEXT_TYPE )
18
19
val metadata : Metadata = builder.build()
19
- assert(FlintMetadataHelper .isTextField(metadata) )
20
+ assert(metadata .isTextField)
20
21
}
21
22
22
23
test(" isTextField returns false when osType is not text" ) {
23
- val builder = new MetadataBuilder ().putString(FlintMetadataHelper .OS_TYPE_KEY , " non-text" )
24
+ val builder = new MetadataBuilder ().putString(FlintMetadataExtensions .OS_TYPE_KEY , " non-text" )
24
25
val metadata : Metadata = builder.build()
25
- assert(! FlintMetadataHelper .isTextField(metadata) )
26
+ assert(! metadata .isTextField)
26
27
}
27
28
28
29
test(" addTextFieldMetadata sets osType to text" ) {
29
30
val builder = new MetadataBuilder ()
30
- val updatedBuilder = FlintMetadataHelper .addTextFieldMetadata( builder)
31
+ val updatedBuilder = builder.withTextField
31
32
val metadata : Metadata = updatedBuilder.build()
32
- assert(metadata.getString(FlintMetadataHelper .OS_TYPE_KEY ) == FlintMetadataHelper .TEXT_TYPE )
33
+ assert(
34
+ metadata.getString(
35
+ FlintMetadataExtensions .OS_TYPE_KEY ) == FlintMetadataExtensions .TEXT_TYPE )
33
36
}
34
37
35
38
test(" addMultiFieldMetadata groups fields by field type" ) {
36
39
val builder = new MetadataBuilder ()
37
40
val fields = Map (
38
- " field1" -> FlintMetadataHelper .TEXT_TYPE ,
39
- " field2" -> FlintMetadataHelper .KEYWORD_TYPE ,
40
- " field3" -> FlintMetadataHelper .KEYWORD_TYPE )
41
- val updatedBuilder = FlintMetadataHelper .addMultiFieldMetadata(builder, fields)
41
+ " field1" -> FlintMetadataExtensions .TEXT_TYPE ,
42
+ " field2" -> FlintMetadataExtensions .KEYWORD_TYPE ,
43
+ " field3" -> FlintMetadataExtensions .KEYWORD_TYPE )
44
+ val updatedBuilder = builder.withMultiFields( fields)
42
45
val metadata : Metadata = updatedBuilder.build()
43
46
44
47
// Verify that multi-field metadata is added under FIELDS_NAMES_KEY.
45
- assert(metadata.contains(FlintMetadataHelper .FIELDS_NAMES_KEY ))
46
- val multiFieldMetadata : Metadata = metadata.getMetadata(FlintMetadataHelper .FIELDS_NAMES_KEY )
48
+ assert(metadata.contains(FlintMetadataExtensions .FIELDS_NAMES_KEY ))
49
+ val multiFieldMetadata : Metadata =
50
+ metadata.getMetadata(FlintMetadataExtensions .FIELDS_NAMES_KEY )
47
51
48
52
// Verify text type field grouping.
49
- assert(multiFieldMetadata.contains(FlintMetadataHelper .TEXT_TYPE ))
50
- val textFields = multiFieldMetadata.getStringArray(FlintMetadataHelper .TEXT_TYPE )
53
+ assert(multiFieldMetadata.contains(FlintMetadataExtensions .TEXT_TYPE ))
54
+ val textFields = multiFieldMetadata.getStringArray(FlintMetadataExtensions .TEXT_TYPE )
51
55
assert(textFields.sameElements(Array (" field1" )))
52
56
53
57
// Verify keyword type field grouping.
54
- assert(multiFieldMetadata.contains(FlintMetadataHelper .KEYWORD_TYPE ))
55
- val keywordFields = multiFieldMetadata.getStringArray(FlintMetadataHelper .KEYWORD_TYPE )
58
+ assert(multiFieldMetadata.contains(FlintMetadataExtensions .KEYWORD_TYPE ))
59
+ val keywordFields = multiFieldMetadata.getStringArray(FlintMetadataExtensions .KEYWORD_TYPE )
56
60
// Since the order of grouping may vary, compare sorted arrays.
57
61
assert(keywordFields.sorted.sameElements(Array (" field2" , " field3" )))
58
62
}
59
63
60
64
test(" getKeywordSubfield returns the first keyword field if available" ) {
61
65
val builder = new MetadataBuilder ()
62
66
val fields = Map (
63
- " field1" -> FlintMetadataHelper .TEXT_TYPE ,
64
- " field2" -> FlintMetadataHelper .KEYWORD_TYPE ,
65
- " field3" -> FlintMetadataHelper .KEYWORD_TYPE )
66
- val updatedBuilder = FlintMetadataHelper .addMultiFieldMetadata(builder, fields)
67
+ " field1" -> FlintMetadataExtensions .TEXT_TYPE ,
68
+ " field2" -> FlintMetadataExtensions .KEYWORD_TYPE ,
69
+ " field3" -> FlintMetadataExtensions .KEYWORD_TYPE )
70
+ val updatedBuilder = builder.withMultiFields( fields)
67
71
val metadata : Metadata = updatedBuilder.build()
68
72
69
73
// Retrieve keyword fields from the nested metadata.
70
- val multiFieldMetadata = metadata.getMetadata(FlintMetadataHelper .FIELDS_NAMES_KEY )
71
- val keywordFields = multiFieldMetadata.getStringArray(FlintMetadataHelper .KEYWORD_TYPE )
74
+ val multiFieldMetadata = metadata.getMetadata(FlintMetadataExtensions .FIELDS_NAMES_KEY )
75
+ val keywordFields = multiFieldMetadata.getStringArray(FlintMetadataExtensions .KEYWORD_TYPE )
72
76
73
77
// Expect the first keyword field.
74
- assert(FlintMetadataHelper .getKeywordSubfield( metadata) == keywordFields.headOption)
78
+ assert(metadata.keywordSubfield == keywordFields.headOption)
75
79
}
76
80
77
81
test(" getKeywordSubfield returns None if no keyword field exists" ) {
78
82
val builder = new MetadataBuilder ()
79
- val fields = Map (" field1" -> FlintMetadataHelper .TEXT_TYPE )
80
- val updatedBuilder = FlintMetadataHelper .addMultiFieldMetadata(builder, fields)
83
+ val fields = Map (" field1" -> FlintMetadataExtensions .TEXT_TYPE )
84
+ val updatedBuilder = builder.withMultiFields( fields)
81
85
val metadata : Metadata = updatedBuilder.build()
82
86
83
87
// Since there is no keyword type, getKeywordSubfield should return None.
84
- assert(FlintMetadataHelper .getKeywordSubfield( metadata) .isEmpty)
88
+ assert(metadata.keywordSubfield .isEmpty)
85
89
}
86
90
}
0 commit comments