github.com/saferwall/pe@v1.5.2/helper_test.go (about)

     1  // Copyright 2021 Saferwall. All rights reserved.
     2  // Use of this source code is governed by Apache v2 license
     3  // license that can be found in the LICENSE file.
     4  
     5  package pe
     6  
     7  import (
     8  	"testing"
     9  )
    10  
    11  func TestIsEXE(t *testing.T) {
    12  
    13  	tests := []struct {
    14  		in  string
    15  		out bool
    16  	}{
    17  		{getAbsoluteFilePath("test/liblzo2-2.dll"), false},
    18  		{getAbsoluteFilePath("test/putty.exe"), true},
    19  	}
    20  
    21  	for _, tt := range tests {
    22  		t.Run(tt.in, func(t *testing.T) {
    23  			file, err := New(tt.in, &Options{})
    24  			if err != nil {
    25  				t.Fatalf("New(%s) failed, reason: %v", tt.in, err)
    26  			}
    27  			err = file.Parse()
    28  			if err != nil {
    29  				t.Fatalf("Parse(%s) failed, reason: %v", tt.in, err)
    30  			}
    31  
    32  			got := file.IsEXE()
    33  			if got != tt.out {
    34  				t.Errorf("IsEXE(%s) got %v, want %v", tt.in, got, tt.out)
    35  			}
    36  
    37  		})
    38  	}
    39  }
    40  
    41  func TestIsDLL(t *testing.T) {
    42  
    43  	tests := []struct {
    44  		in  string
    45  		out bool
    46  	}{
    47  		{getAbsoluteFilePath("test/liblzo2-2.dll"), true},
    48  		{getAbsoluteFilePath("test/putty.exe"), false},
    49  	}
    50  
    51  	for _, tt := range tests {
    52  		t.Run(tt.in, func(t *testing.T) {
    53  			file, err := New(tt.in, &Options{})
    54  			if err != nil {
    55  				t.Fatalf("New(%s) failed, reason: %v", tt.in, err)
    56  			}
    57  			err = file.Parse()
    58  			if err != nil {
    59  				t.Fatalf("Parse(%s) failed, reason: %v", tt.in, err)
    60  			}
    61  
    62  			got := file.IsDLL()
    63  			if got != tt.out {
    64  				t.Errorf("IsDLL(%s) got %v, want %v", tt.in, got, tt.out)
    65  			}
    66  
    67  		})
    68  	}
    69  }
    70  
    71  func TestIsDriver(t *testing.T) {
    72  
    73  	tests := []struct {
    74  		in  string
    75  		out bool
    76  	}{
    77  		{getAbsoluteFilePath("test/liblzo2-2.dll"), false},
    78  		{getAbsoluteFilePath("test/WdBoot.sys"), true},
    79  	}
    80  
    81  	for _, tt := range tests {
    82  		t.Run(tt.in, func(t *testing.T) {
    83  			file, err := New(tt.in, &Options{})
    84  			if err != nil {
    85  				t.Fatalf("New(%s) failed, reason: %v", tt.in, err)
    86  			}
    87  			err = file.Parse()
    88  			if err != nil {
    89  				t.Fatalf("Parse(%s) failed, reason: %v", tt.in, err)
    90  			}
    91  
    92  			got := file.IsDriver()
    93  			if got != tt.out {
    94  				t.Errorf("IsDriver(%s) got %v, want %v", tt.in, got, tt.out)
    95  			}
    96  
    97  		})
    98  	}
    99  }