From 78d3aa2dbc2d7f5cde8be9adcaca7e41f9e50bf5 Mon Sep 17 00:00:00 2001 From: Maxim Babichev Date: Thu, 10 Aug 2023 18:42:56 +0300 Subject: [PATCH] bugfix --- packer.go | 5 +++-- packer_test.go | 26 ++++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/packer.go b/packer.go index 8136249..2771d34 100644 --- a/packer.go +++ b/packer.go @@ -72,10 +72,11 @@ func (p *Packer) preferredSort(boxes boxSlice, items itemSlice) boxSlice { func (p *Packer) packToBox(b *Box, items []*Item) []*Item { var fitted bool - unpacked := make([]*Item, 0, len(items)) + cntItems := len(items) + unpacked := make([]*Item, 0, cntItems) pv := Pivot{} - if b.items == nil && b.PutItem(items[0], pv) { + if b.items == nil && cntItems > 0 && b.PutItem(items[0], pv) { items = items[1:] } diff --git a/packer_test.go b/packer_test.go index eac813b..916a656 100644 --- a/packer_test.go +++ b/packer_test.go @@ -79,6 +79,32 @@ func TestBoxPackerSuite(t *testing.T) { suite.Run(t, new(PackerSuit)) } +func (s *PackerSuit) TestEmptyBoxes() { + t := s.T() + t.Parallel() + + packer := boxpacker3.NewPacker() + + packResult := packer.Pack(nil, nil) + require.NotNil(t, packResult) + require.Len(t, packResult.Boxes, 0) + require.Len(t, packResult.UnfitItems, 0) +} + +func (s *PackerSuit) TestEmptyItems() { + t := s.T() + t.Parallel() + + packer := boxpacker3.NewPacker() + + boxes := NewDefaultBoxList() + + packResult := packer.Pack(boxes, nil) + require.NotNil(t, packResult) + require.Len(t, packResult.Boxes, len(boxes)) + require.Len(t, packResult.UnfitItems, 0) +} + func (s *PackerSuit) TestMinBox() { t := s.T() t.Parallel()