package core

// AssertContainsAll verifica que haystack contiene todos los elementos de needles.
// Retorna (true, nil) si todos estan presentes, o (false, []string con los faltantes).
func AssertContainsAll(haystack, needles []string) (bool, []string) {
	set := make(map[string]struct{}, len(haystack))
	for _, s := range haystack {
		set[s] = struct{}{}
	}

	var missing []string
	for _, n := range needles {
		if _, ok := set[n]; !ok {
			missing = append(missing, n)
		}
	}

	if len(missing) == 0 {
		return true, nil
	}
	return false, missing
}
