Adding modding folder with a hacked build.

This commit is contained in:
ml
2026-09-26 08:53:08 +02:00
parent cdb960dc71
commit c91080aba7
755 changed files with 50424 additions and 0 deletions
@@ -0,0 +1,136 @@
package resource_test
import (
"testing"
"github.com/inkyblackness/hacked/ss1/resource"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/suite"
)
type ChangeNotifierSuite struct {
suite.Suite
lastModifiedIDs []resource.ID
lastFailedIDs []resource.ID
localizedResources resource.LocalizedResourcesList
instance resource.ChangeNotifier
}
func TestResourceChangeNotifierSuite(t *testing.T) {
suite.Run(t, new(ChangeNotifierSuite))
}
func (suite *ChangeNotifierSuite) SetupTest() {
suite.lastModifiedIDs = nil
suite.lastFailedIDs = nil
suite.instance.Localizer = suite
suite.instance.Callback = suite.onResourcesModified
}
func (suite *ChangeNotifierSuite) TestNoIDsAreNotifiedIfDataNotChanged() {
suite.givenListIsMadeOf(
suite.someLocalizedResources(resource.LangGerman,
suite.storing(0x1000, []byte{0x01})))
suite.whenResourcesAreModified(func() {}, 0x1000)
suite.thenModifiedIDsShouldBe()
}
func (suite *ChangeNotifierSuite) TestIDsAreNotifiedOfNewData() {
suite.givenListIsMadeOf(
suite.someLocalizedResources(resource.LangGerman,
suite.storing(0x1000, []byte{0x01})))
suite.whenResourcesAreModified(func() {
suite.extendingListWith(
suite.someLocalizedResources(resource.LangGerman,
suite.storing(0x2000, []byte{0x01})))
}, 0x2000)
suite.thenModifiedIDsShouldBe(0x2000)
}
func (suite *ChangeNotifierSuite) TestIDsAreNotifiedOfRemovedData() {
suite.givenListIsMadeOf(
suite.someLocalizedResources(resource.LangGerman,
suite.storing(0x1000, []byte{0x01})))
suite.whenResourcesAreModified(func() {
suite.listIsMadeOf()
}, 0x1000)
suite.thenModifiedIDsShouldBe(0x1000)
}
func (suite *ChangeNotifierSuite) TestIDsAreNotifiedOfChangedData() {
suite.givenListIsMadeOf(
suite.someLocalizedResources(resource.LangAny,
suite.storing(0x1000, []byte{0x01})))
suite.whenResourcesAreModified(func() {
suite.listIsMadeOf(
suite.someLocalizedResources(resource.LangAny,
suite.storing(0x1000, []byte{0x02})))
}, 0x1000)
suite.thenModifiedIDsShouldBe(0x1000)
}
func (suite *ChangeNotifierSuite) givenListIsMadeOf(resources ...resource.LocalizedResources) {
suite.localizedResources = resources
}
func (suite *ChangeNotifierSuite) extendingListWith(resources ...resource.LocalizedResources) {
suite.localizedResources = append(suite.localizedResources, resources...)
}
func (suite *ChangeNotifierSuite) listIsMadeOf(resources ...resource.LocalizedResources) {
suite.localizedResources = resources
}
func (suite *ChangeNotifierSuite) whenResourcesAreModified(modifier func(), affectedIDs ...int) {
convertedIDs := make([]resource.ID, len(affectedIDs))
for i, id := range affectedIDs {
convertedIDs[i] = resource.ID(id)
}
suite.instance.ModifyAndNotify(modifier, convertedIDs)
}
func (suite *ChangeNotifierSuite) thenModifiedIDsShouldBe(expected ...int) {
convertedIDs := make([]resource.ID, len(expected))
for i, id := range expected {
convertedIDs[i] = resource.ID(id)
}
assert.Equal(suite.T(), convertedIDs, suite.lastModifiedIDs, "IDs don't match")
}
func (suite *ChangeNotifierSuite) someLocalizedResources(lang resource.Language, modifiers ...func(*resource.Store)) resource.LocalizedResources {
var store resource.Store
for _, modifier := range modifiers {
modifier(&store)
}
return resource.LocalizedResources{
ID: "unnamed",
Language: lang,
Viewer: store,
}
}
func (suite *ChangeNotifierSuite) storing(id int, data ...[]byte) func(*resource.Store) {
return func(store *resource.Store) {
_ = store.Put(resource.ID(id), resource.Resource{
Blocks: resource.BlocksFrom(data),
})
}
}
func (suite *ChangeNotifierSuite) LocalizedResources(lang resource.Language) resource.Selector {
return resource.Selector{
From: suite.localizedResources,
Lang: lang,
}
}
func (suite *ChangeNotifierSuite) onResourcesModified(modifiedIDs []resource.ID, failedIDs []resource.ID) {
suite.lastModifiedIDs = modifiedIDs
suite.lastFailedIDs = failedIDs
}