Back to Repositories

Testing Array Operations and Slice Manipulation in hello-algo

A comprehensive Go test suite examining array operations and slice manipulation in the hello-algo repository. This test file validates fundamental array operations including initialization, access, extension, insertion, and deletion while treating Go slices as arrays for educational purposes.

Test Coverage Overview

This test suite provides thorough coverage of essential array operations in Go.

Key functionality tested includes:
  • Array initialization and declaration
  • Random element access
  • Array extension operations
  • Element insertion and deletion
  • Array traversal and element finding
Edge cases are addressed through various array manipulations and index-based operations.

Implementation Analysis

The testing approach utilizes Go’s native testing package with a focus on demonstrating array functionality through practical examples.

Testing patterns include:
  • Direct array manipulation verification
  • Slice-to-array conversion demonstrations
  • Sequential operation validation
  • Print-based result verification

Technical Details

Testing infrastructure includes:
  • Go testing framework (testing package)
  • fmt package for output verification
  • Custom array operation functions
  • Slice-based array implementation

Best Practices Demonstrated

The test suite exemplifies several testing best practices:

  • Clear function documentation and comments
  • Systematic operation verification
  • Comprehensive functionality coverage
  • Educational-focused implementation approach
  • Clean separation of test cases

krahets/hello-algo

zh-hant/codes/go/chapter_array_and_linkedlist/array_test.go

            
// File: array_test.go
// Created Time: 2022-12-29
// Author: GuoWei ([email protected]), cathay ([email protected])

package chapter_array_and_linkedlist

/**
我們將 Go 中的 Slice 切片看作 Array 陣列。因為這樣可以
降低理解成本,利於我們將關注點放在資料結構與演算法上。
*/

import (
	"fmt"
	"testing"
)

/* Driver Code */
func TestArray(t *testing.T) {
	/* 初始化陣列 */
	var arr [5]int
	fmt.Println("陣列 arr =", arr)
	// 在 Go 中,指定長度時([5]int)為陣列,不指定長度時([]int)為切片
	// 由於 Go 的陣列被設計為在編譯期確定長度,因此只能使用常數來指定長度
	// 為了方便實現擴容 extend() 函式,以下將切片(Slice)看作陣列(Array)
	nums := []int{1, 3, 2, 5, 4}
	fmt.Println("陣列 nums =", nums)

	/* 隨機訪問 */
	randomNum := randomAccess(nums)
	fmt.Println("在 nums 中獲取隨機元素", randomNum)

	/* 長度擴展 */
	nums = extend(nums, 3)
	fmt.Println("將陣列長度擴展至 8 ,得到 nums =", nums)

	/* 插入元素 */
	insert(nums, 6, 3)
	fmt.Println("在索引 3 處插入數字 6 ,得到 nums =", nums)

	/* 刪除元素 */
	remove(nums, 2)
	fmt.Println("刪除索引 2 處的元素,得到 nums =", nums)

	/* 走訪陣列 */
	traverse(nums)

	/* 查詢元素 */
	index := find(nums, 3)
	fmt.Println("在 nums 中查詢元素 3 ,得到索引 =", index)
}