Skip to content

Commit

Permalink
refactor id generators and fix load bug (#119)
Browse files Browse the repository at this point in the history
  • Loading branch information
eth0net committed Sep 7, 2023
1 parent b42c57f commit a356939
Show file tree
Hide file tree
Showing 5 changed files with 13 additions and 23 deletions.
12 changes: 6 additions & 6 deletions addons/pandora/util/nanoid_generator.gd
Expand Up @@ -4,18 +4,18 @@ extends RefCounted


const ALPHABET := "useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict"
const SIZE := 21
const DEFAULT_LENGTH := 21


var size: int
var default_length := DEFAULT_LENGTH


func _init(size := SIZE) -> void:
self.size = size
func _init(length := DEFAULT_LENGTH) -> void:
default_length = length


func generate() -> String:
func generate(length := default_length) -> String:
var id: String
for i in range(size):
for i in range(length):
id += ALPHABET[randi() % ALPHABET.length()]
return id
10 changes: 2 additions & 8 deletions addons/pandora/util/sequential_id_generator.gd
Expand Up @@ -2,19 +2,13 @@ class_name PandoraSequentialIDGenerator
extends RefCounted


const DEFAULT_CONTEXT := "default"
const DEFAULT_CONTEXT: String = "default"


var _ids_by_context: Dictionary = {}

var context: String


func _init(context: String = DEFAULT_CONTEXT):
self.context = context


func generate() -> String:
func generate(context:String = DEFAULT_CONTEXT) -> String:
if not _ids_by_context.has(context):
_ids_by_context[context] = 0
_ids_by_context[context] += 1
Expand Down
2 changes: 1 addition & 1 deletion test/util/id_generator_test.gd
Expand Up @@ -13,7 +13,7 @@ func test_generate() -> void:
var id_generator = auto_free(preload(__source).new())

PandoraSettings.set_id_type(PandoraSettings.IDType.NANOID)
id_generator._nanoid.size = 3
id_generator._nanoid.default_length = 3
assert_that(len(id_generator.generate())).is_equal(3)

PandoraSettings.set_id_type(PandoraSettings.IDType.SEQUENTIAL)
Expand Down
3 changes: 1 addition & 2 deletions test/util/nanoid_generator_test.gd
Expand Up @@ -12,5 +12,4 @@ const __source = 'res://addons/pandora/util/nanoid_generator.gd'
func test_generate_size() -> void:
var id_generator = auto_free(preload(__source).new(3))
assert_that(len(id_generator.generate())).is_equal(3)
id_generator.size = 4
assert_that(len(id_generator.generate())).is_equal(4)
assert_that(len(id_generator.generate(4))).is_equal(4)
9 changes: 3 additions & 6 deletions test/util/sequential_id_generator_test.gd
Expand Up @@ -13,8 +13,7 @@ func test_generate_clear() -> void:
var id_generator = auto_free(preload(__source).new())
assert_that(id_generator.generate()).is_equal("1")
assert_that(id_generator.generate()).is_equal("2")
id_generator.context = "other-context"
assert_that(id_generator.generate()).is_equal("1")
assert_that(id_generator.generate("other-context")).is_equal("1")
assert_dict(id_generator._ids_by_context).is_not_empty()
id_generator.clear()
assert_dict(id_generator._ids_by_context).is_empty()
Expand All @@ -23,11 +22,9 @@ func test_generate_clear() -> void:
func test_save_load_data() -> void:
var id_generator = auto_free(preload(__source).new())
assert_that(id_generator.generate()).is_equal("1")
id_generator.context = "other-context"
assert_that(id_generator.generate()).is_equal("1")
assert_that(id_generator.generate("other-context")).is_equal("1")

var other_id_generator = auto_free(preload(__source).new())
other_id_generator.load_data(id_generator.save_data())
assert_that(other_id_generator.generate()).is_equal("2")
other_id_generator.context = "other-context"
assert_that(other_id_generator.generate()).is_equal("2")
assert_that(other_id_generator.generate("other-context")).is_equal("2")

0 comments on commit a356939

Please sign in to comment.