1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-24 15:26:15 +00:00

Merge pull request #68747 from rune-scape/rune-stringname-unification

GDScript: Unify StringName and String
This commit is contained in:
Rémi Verschelde
2022-12-09 18:06:48 +01:00
28 changed files with 1450 additions and 254 deletions

View File

@@ -0,0 +1,35 @@
# https://github.com/godotengine/godot/issues/63965
func test():
var array_str: Array = []
array_str.push_back("godot")
print("StringName in Array: ", &"godot" in array_str)
var array_sname: Array = []
array_sname.push_back(&"godot")
print("String in Array: ", "godot" in array_sname)
# Not equal because the values are different types.
print("Arrays not equal: ", array_str != array_sname)
var string_array: Array[String] = []
var stringname_array: Array[StringName] = []
assert(!string_array.push_back(&"abc"))
print("Array[String] insert converted: ", typeof(string_array[0]) == TYPE_STRING)
assert(!stringname_array.push_back("abc"))
print("Array[StringName] insert converted: ", typeof(stringname_array[0]) == TYPE_STRING_NAME)
print("StringName in Array[String]: ", &"abc" in string_array)
print("String in Array[StringName]: ", "abc" in stringname_array)
var packed_string_array: PackedStringArray = []
assert(!packed_string_array.push_back("abc"))
print("StringName in PackedStringArray: ", &"abc" in packed_string_array)
assert(!string_array.push_back("abc"))
print("StringName finds String in Array: ", string_array.find(&"abc"))
assert(!stringname_array.push_back(&"abc"))
print("String finds StringName in Array: ", stringname_array.find("abc"))

View File

@@ -0,0 +1,11 @@
GDTEST_OK
StringName in Array: true
String in Array: true
Arrays not equal: true
Array[String] insert converted: true
Array[StringName] insert converted: true
StringName in Array[String]: true
String in Array[StringName]: true
StringName in PackedStringArray: true
StringName finds String in Array: 0
String finds StringName in Array: 0

View File

@@ -0,0 +1,17 @@
# https://github.com/godotengine/godot/issues/62957
func test():
var string_dict = {}
string_dict["abc"] = 42
var stringname_dict = {}
stringname_dict[&"abc"] = 24
print("String key is TYPE_STRING: ", typeof(string_dict.keys()[0]) == TYPE_STRING)
print("StringName key is TYPE_STRING: ", typeof(stringname_dict.keys()[0]) == TYPE_STRING)
print("StringName gets String: ", string_dict.get(&"abc"))
print("String gets StringName: ", stringname_dict.get("abc"))
stringname_dict[&"abc"] = 42
# They compare equal because StringName keys are converted to String.
print("String Dictionary == StringName Dictionary: ", string_dict == stringname_dict)

View File

@@ -0,0 +1,6 @@
GDTEST_OK
String key is TYPE_STRING: true
StringName key is TYPE_STRING: true
StringName gets String: 42
String gets StringName: 24
String Dictionary == StringName Dictionary: true

View File

@@ -0,0 +1,14 @@
# https://github.com/godotengine/godot/issues/60145
func test():
match "abc":
&"abc":
print("String matched StringName")
_:
print("no match")
match &"abc":
"abc":
print("StringName matched String")
_:
print("no match")

View File

@@ -0,0 +1,3 @@
GDTEST_OK
String matched StringName
StringName matched String

View File

@@ -0,0 +1,11 @@
# https://github.com/godotengine/godot/issues/64171
func test():
print("Compare ==: ", "abc" == &"abc")
print("Compare ==: ", &"abc" == "abc")
print("Compare !=: ", "abc" != &"abc")
print("Compare !=: ", &"abc" != "abc")
print("Concat: ", "abc" + &"def")
print("Concat: ", &"abc" + "def")
print("Concat: ", &"abc" + &"def")

View File

@@ -0,0 +1,8 @@
GDTEST_OK
Compare ==: true
Compare ==: true
Compare !=: false
Compare !=: false
Concat: abcdef
Concat: abcdef
Concat: abcdef