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,92 @@
package world_test
import (
"fmt"
"testing"
"github.com/inkyblackness/hacked/ss1/resource"
"github.com/inkyblackness/hacked/ss1/world"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/stretchr/testify/suite"
)
type ManifestEntrySuite struct {
suite.Suite
entry *world.ManifestEntry
finder resource.Selector
}
func TestManifestEntrySuite(t *testing.T) {
suite.Run(t, new(ManifestEntrySuite))
}
func (suite *ManifestEntrySuite) SetupTest() {
suite.entry = new(world.ManifestEntry)
}
func (suite *ManifestEntrySuite) TestResourceReturnsErrorIfNothingFound() {
suite.whenViewingResource(resource.LangAny)
suite.thenResourceViewShouldNotBeAvailable(1234)
}
func (suite *ManifestEntrySuite) TestResourceReturnsViewIfMatched() {
suite.givenLocalizedResources(resource.LangAny, 1000, [][]byte{{0x01}})
suite.whenViewingResource(resource.LangAny)
suite.thenResourceViewShouldBeAvailable(1000)
}
func (suite *ManifestEntrySuite) TestResourceConsidersResourcesWithLanguageAnyWhenLookingForSpecific() {
suite.givenLocalizedResources(resource.LangAny, 1000, [][]byte{{0x01}})
suite.whenViewingResource(resource.LangDefault)
suite.thenResourceViewShouldBeAvailable(1000)
}
func (suite *ManifestEntrySuite) TestResourceConsidersResourcesWithSpecificLanguage() {
suite.givenLocalizedResources(resource.LangFrench, 1000, [][]byte{{0x01}})
suite.whenViewingResource(resource.LangFrench)
suite.thenResourceViewShouldBeAvailable(1000)
}
func (suite *ManifestEntrySuite) TestResourceIgnoresResourcesWithSpecificLanguageWhenLookingForAny() {
suite.givenLocalizedResources(resource.LangFrench, 1000, [][]byte{{0x01}})
suite.whenViewingResource(resource.LangAny)
suite.thenResourceViewShouldNotBeAvailable(1000)
}
func (suite *ManifestEntrySuite) TestResourceIgnoresResourcesWithSpecificLanguageWhenLookingForDifferentLanguage() {
suite.givenLocalizedResources(resource.LangFrench, 1000, [][]byte{{0x01}})
suite.whenViewingResource(resource.LangDefault)
suite.thenResourceViewShouldNotBeAvailable(1000)
suite.whenViewingResource(resource.LangGerman)
suite.thenResourceViewShouldNotBeAvailable(1000)
}
func (suite *ManifestEntrySuite) givenLocalizedResources(lang resource.Language, id int, data [][]byte) {
var store resource.Store
_ = store.Put(resource.ID(id), resource.Resource{
Blocks: resource.BlocksFrom(data),
})
suite.entry.Resources = append(suite.entry.Resources, resource.LocalizedResources{
Language: lang,
Viewer: store,
})
}
func (suite *ManifestEntrySuite) whenViewingResource(lang resource.Language) {
suite.finder = suite.entry.LocalizedResources(lang)
}
func (suite *ManifestEntrySuite) thenResourceViewShouldNotBeAvailable(id int) {
view, err := suite.finder.Select(resource.ID(id))
assert.Error(suite.T(), err, fmt.Sprintf("Error expected finding resource %v", id))
assert.Nil(suite.T(), view, fmt.Sprintf("No view expected finding resource %v", id))
}
func (suite *ManifestEntrySuite) thenResourceViewShouldBeAvailable(id int) {
view, err := suite.finder.Select(resource.ID(id))
require.Nil(suite.T(), err, fmt.Sprintf("No error expected finding resource %v", id))
assert.NotNil(suite.T(), view, fmt.Sprintf("View expected for resource %v", id))
}