github.com/vpayno/adventofcode-2022-golang-workspace@v0.0.0-20230605190011-dbafed5593de/internal/day03/init_test.go (about)

     1  package day03
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  )
     9  
    10  func TestSetup(t *testing.T) {
    11  	appName := "testName"
    12  
    13  	want := Config{
    14  		appName:       appName,
    15  		inputFileName: "data/" + appName + "/" + appName + "-input.txt",
    16  	}
    17  
    18  	got := Setup(appName)
    19  
    20  	assert.Equal(t, want.appName, got.appName, "app names aren't equal")
    21  	assert.Equal(t, want.inputFileName, got.inputFileName, "input file names aren't equal")
    22  }
    23  
    24  func TestRucksack_getCollection(t *testing.T) {
    25  	r := rucksack{
    26  		items: "vJrwpWtwJgWrhcsFMMfFFhFp",
    27  	}
    28  
    29  	want1 := "vJrwpWtwJgWr"
    30  	want2 := "hcsFMMfFFhFp"
    31  
    32  	got1 := r.getCollection(1)
    33  	got2 := r.getCollection(2)
    34  
    35  	assert.Equal(t, want1, got1)
    36  	assert.Equal(t, want2, got2)
    37  }
    38  
    39  func TestRucksack_getSharedItem(t *testing.T) {
    40  	r := rucksack{
    41  		items: "vJrwpWtwJgWrhcsFMMfFFhFp",
    42  	}
    43  
    44  	want := 'p'
    45  	got, err := r.getSharedItem()
    46  
    47  	assert.Nil(t, err)
    48  	msg := fmt.Errorf("want char [%c], got char [%c]", want, got)
    49  	assert.Equal(t, want, got, msg)
    50  }
    51  
    52  func TestRucksack_getSharedItem_error(t *testing.T) {
    53  	// even, no shared item
    54  	r := rucksack{
    55  		items: "abcdefgh",
    56  	}
    57  
    58  	_, err := r.getSharedItem()
    59  
    60  	assert.NotNil(t, err)
    61  }
    62  
    63  func TestRucksack_getSharedPriority(t *testing.T) {
    64  	r := rucksack{
    65  		items: "vJrwpWtwJgWrhcsFMMfFFhFp",
    66  	}
    67  
    68  	want := 16
    69  	got, err := r.getSharedPriority()
    70  
    71  	assert.Nil(t, err)
    72  	assert.Equal(t, want, got)
    73  }
    74  
    75  func TestRucksack_getSharedPriority_error(t *testing.T) {
    76  	// odd length string
    77  	r := rucksack{
    78  		items: "abcdefgh",
    79  	}
    80  
    81  	_, err := r.getSharedPriority()
    82  
    83  	assert.NotNil(t, err)
    84  }
    85  
    86  func TestRucksack_addItems(t *testing.T) {
    87  	want := rucksack{
    88  		items: "vJrwpWtwJgWrhcsFMMfFFhFp",
    89  	}
    90  
    91  	got := new(rucksack)
    92  	gotErr := got.addItems("vJrwpWtwJgWrhcsFMMfFFhFp")
    93  
    94  	assert.Nil(t, gotErr, "there was an error adding the items to the rucksack")
    95  	assert.Equal(t, want.items, got.items)
    96  }
    97  
    98  func TestGetPriority(t *testing.T) {
    99  	char := 'a'
   100  	want := 1
   101  	got := getPriority(char)
   102  	assert.Equal(t, want, got, "wrong priority, "+", for item "+string(char))
   103  
   104  	char = 'z'
   105  	want = 26
   106  	got = getPriority(char)
   107  	assert.Equal(t, want, got, "wrong priority, "+", for item "+string(char))
   108  
   109  	char = 'A'
   110  	want = 27
   111  	got = getPriority(char)
   112  	assert.Equal(t, want, got, "wrong priority, "+", for item "+string(char))
   113  
   114  	char = 'Z'
   115  	want = 52
   116  	got = getPriority(char)
   117  	assert.Equal(t, want, got, "wrong priority, "+", for item "+string(char))
   118  }