50 lines
		
	
	
		
			954 B
		
	
	
	
		
			V
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			954 B
		
	
	
	
		
			V
		
	
	
fn test_flag_parsing() {
 | 
						|
	mut rest := '-lGlfw -f gl2,-ltest_nice_meme,-l cc,-Ldl test.o a.o ' //, whatever.o'
 | 
						|
	result := ['-l', 'Glfw', 
 | 
						|
			   '-f', 'gl2', 
 | 
						|
			   '-l', 'test_nice_meme', 
 | 
						|
			   '-l', 'cc',
 | 
						|
			   '-L', 'dl',
 | 
						|
			   '', 'test.o',
 | 
						|
			   '', 'a.o']
 | 
						|
 | 
						|
	mut flags := []string
 | 
						|
	for {
 | 
						|
		mut base := rest
 | 
						|
 | 
						|
		fl := if rest.starts_with('-') {
 | 
						|
			base = rest[2..].trim_space()
 | 
						|
			rest[..2]
 | 
						|
		} else {
 | 
						|
			''
 | 
						|
		}
 | 
						|
 | 
						|
		// Which ever one of these is lowest we use
 | 
						|
		// TODO: we really shouldnt support all of these cmon
 | 
						|
		mut lowest := base.index('-')
 | 
						|
		for x in [base.index(' '), base.index(',')] {
 | 
						|
			if (x < lowest && x != -1) || lowest == -1 {
 | 
						|
				lowest = x
 | 
						|
			}
 | 
						|
		}
 | 
						|
		arg := if lowest != -1 {
 | 
						|
			rest = base[lowest..].trim_space().trim(',')
 | 
						|
			base[..lowest].trim_space().trim(',')
 | 
						|
		} else {
 | 
						|
			rest = ''
 | 
						|
			base.trim_space()
 | 
						|
		}
 | 
						|
 | 
						|
		flags << fl
 | 
						|
		flags << arg
 | 
						|
 | 
						|
		if rest.len == 0 {
 | 
						|
			break
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	for i, f in flags {
 | 
						|
		assert f == result[i] 
 | 
						|
	}
 | 
						|
}
 |