package regression
import (
	"modify/processor"
	"os"
	"path/filepath"
	"testing"
)
func TestTalentsMechanicOutOfRange(t *testing.T) {
	given := `
    
    
      
      
    
    
    
      
        
      
    
    
      
        
      
      
        
          
            
              
            
          
        
      
    
  `
	actual := `
    
    
      
      
    
    
    
      
        
      
    
    
      
        
      
      
        
          
            
              
            
          
        
      
    
  `
	p := &processor.RegexProcessor{}
	result, mods, matches, err := p.ProcessContent(given, `!anyvalue="(?!num)"!anyvalue="(?!num)"!anyvalue="(?!num)"!anyamount="(?!num)"`, "movementspeed=round(movementspeed*1.5, 2) duration=round(duration*2, 2) repairspeed=round(repairspeed*2, 2) durationv=duration")
	if err != nil {
		t.Fatalf("Error processing content: %v", err)
	}
	if matches != 1 {
		t.Errorf("Expected 1 match, got %d", matches)
	}
	if mods != 1 {
		t.Errorf("Expected 1 modification, got %d", mods)
	}
	if result != actual {
		t.Errorf("expected %s, got %s", actual, result)
	}
}
func TestIndexExplosions_ShouldNotPanic(t *testing.T) {
	cwd, err := os.Getwd()
	if err != nil {
		t.Fatalf("Error getting current working directory: %v", err)
	}
	given, err := os.ReadFile(filepath.Join(cwd, "..", "testfiles", "OutpostItems.xml"))
	if err != nil {
		t.Fatalf("Error reading file: %v", err)
	}
	expected, err := os.ReadFile(filepath.Join(cwd, "..", "testfiles", "OutpostItemsExpected.xml"))
	if err != nil {
		t.Fatalf("Error reading file: %v", err)
	}
	p := &processor.RegexProcessor{}
	result, mods, matches, err := p.ProcessContent(string(given), `(?-s)LightComponent!anyrange="(!num)"`, "*4")
	if err != nil {
		t.Fatalf("Error processing content: %v", err)
	}
	if matches != 45 {
		t.Errorf("Expected 45 match, got %d", matches)
	}
	if mods != 45 {
		t.Errorf("Expected 45 modification, got %d", mods)
	}
	if string(result) != string(expected) {
		t.Errorf("expected %s, got %s", expected, result)
	}
}