import net.http

fn test_header_new() {
	h := http.new_header(
		{key: .accept, value: 'nothing'},
		{key: .expires, value: 'yesterday'}
	)
	assert h.contains_str('accept')
	assert h.contains(.expires)
	accept := h.get(.accept) or { '' }
	expires := h.get(.expires) or { '' }
	assert accept == 'nothing'
	assert expires == 'yesterday'
}

fn test_header_invalid_key() {
	mut h := http.new_header()
	h.add_str('space is invalid', ':(') or { return }
	panic('should have returned')
}

fn test_header_adds_multiple() {
	mut h := http.new_header()
	h.add(.accept, 'one')
	h.add(.accept, 'two')

	assert h.values(.accept) == ['one' 'two']
}

fn test_header_set() {
	mut h := http.new_header(
		{key: .dnt, value: 'one'},
		{key: .dnt, value: 'two'}
	)
	assert h.values(.dnt) == ['one' 'two']
	h.set_str('dnt', 'three')
	assert h.values(.dnt) == ['three']
}

fn test_header_delete() {
	mut h := http.new_header(
		{key: .dnt, value: 'one'},
		{key: .dnt, value: 'two'}
	)
	assert h.values(.dnt) == ['one' 'two']
	h.delete_str('dnt')
	assert h.values(.dnt) == []
}